আমি আমার জাভাএফএক্স অ্যাপ্লিকেশনটির একটি বোতামে ক্লিক করলে আমি মানচিত্রে একটি চিহ্নিতকারী প্রদর্শন করার চেষ্টা করছি। সুতরাং যখন আমি সেই বোতামটিতে ক্লিক করি তখন কী হয় তা আমি একটি জেএসওএন ফাইলে অবস্থানটি লিখি, এই ফাইলটি এইচটিএমএল ফাইলটিতে লোড হবে যাতে মানচিত্র রয়েছে। সমস্যাটি হ'ল আমি ব্রাউজারে এইচটিএমএল পৃষ্ঠা খুললে এটি পুরোপুরি কাজ করে তবে জাভাএফএক্সের ওয়েব ভিউতে কিছুই ঘটে না, এবং কেন জানি না!
এটি এইচটিএমএল ফাইল:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
/*#map {
height: 100%;
}*/
#map{width:100%;height:100%;margin:auto;}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
var marker;
// Multiple Markers
var markers = [];
var pos = {lat: 46.662388, lng: 0.3599617};
var itinerary_markers = [];
function initMap() {
var currentLat, currentLng;//Latitude et longtitude courante
$.ajax({
url: 'https://maps.googleapis.com/maps/api/geocode/json?address=My+ADDRESS&key=MY_KEY',
async: false,
dataType: 'json',
success: function (data) {
currentLat = data.results[0].geometry.location.lat;
currentLng = data.results[0].geometry.location.lng;
}
});
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: currentLat, lng: currentLng},
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
/*MARQUEUR*/
$.ajax({
async: false,
url: 'test.json',
data: "",
accepts:'application/json',
dataType: 'json',
success: function (data) {
for (var i = 0; i < data.hydrants.length; i++) {
markers.push( data.hydrants[i]);
}
}
});
var posi = new google.maps.LatLng(markers[0].Lat, markers[0].Lng);
marker = new google.maps.Marker({
position: posi,
map: map,
//title: markers[i][0]
title: markers[0].Name
});
}
</script>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous">
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=MY_KEY&callback=initMap&language=fr"
async defer></script>
</body>
</html>
আমি যখন বোতামটি ক্লিক করি তখন আমি JSON ফাইলটি পূরণ করি (যা নিখুঁতভাবে কাজ করে) এবং তারপরে আমি ওয়েব ভিউ রিফ্রেশ করার জন্য এটি সম্পাদন করি:
this.webView.getEngine().load(getClass().getResource("/data/index.html").toString());
যেমনটি আমি আগেই বলেছি, আমি যখন ব্রাউজারে ফাইলটি খুলি তখন আমি প্রত্যাশিত ফলাফলটি দেখতে পাই, তবে জাভাএফএক্স-এ সমস্যা কী তা আমি জানি না। এটি করার আরও ভাল উপায় যদি থাকে তবে আমাকে বলুন।
সম্পাদনা করুন:
এক্সিকিউটসস্ক্রিপ্ট () পদ্ধতিটি ব্যবহার করে জাভাএফএক্স থেকে জাভাস্ক্রিপ্টে সরাসরি ডেটা (জিপিএস স্থানাঙ্ক) প্রেরণ করে সমস্যার সমাধান খুঁজে পেয়েছি, সুতরাং দুটি প্ল্যাটফর্মের মধ্যে ব্রিজ হিসাবে আমার কোনও জেসন ফাইলের প্রয়োজন নেই। সুতরাং কোডটি কেমন দেখাচ্ছে তার এটি উদাহরণ:
eng.executeScript("updateMarker(" + lat + ", " + lng + ")");//eng is a WebEngine instance
এবং এখানে জাভাস্ক্রিপ্ট:
/*The initial latitude and longtitude*/
var currentLat = the latitude;
var currentLng = the longtitude;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: currentLat, lng: currentLng},
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var posi = new google.maps.LatLng(currentLat, currentLng);
marker = new google.maps.Marker({
position: posi,
map: map,
visible: false
});
}
/*The method that is I call from JavaFX*/
function updateMarker(_lat, _lng){
marker.setPosition({lat: _lat, lng: _lng});
map.setCenter(new google.maps.LatLng(_lat, _lng));
marker.setVisible(true);
}
আপনার মন্তব্য এবং উত্তর, এবং reddit একটি বিশেষ শুটআউট জন্য আপনাকে ধন্যবাদ।
cache: false
এটি ক্যাশেড হওয়ার ক্ষেত্রে এজাক্স কলটি পাস করুন এবং নিশ্চিত করুন যে আপনি সঠিক ফাইলটি লক্ষ্যবস্তু করেছেন। এছাড়াও কিছু লগ এখানে এবং সেখানে সমস্যা সনাক্ত করতে সহায়তা করবে।