У меня есть настольное приложение JavaFX с WebView, в котором отображается карта Google.
Я использую JS для отображения карты и установки маркеров. Также мне нужно взять координаты из базы данных и установить его на карте.
HTML документ:
<!DOCTYPE html>
<html>
<head>
<style>
#map {
height: 900px;
width: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
function setMarker(uluru) {
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
function initMap() {
var uluru = {lat: -25.363, lng: 131.044};
map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: uluru
});
setMarker(uluru);
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=myKey&callback=initMap">
</script>
</body>
</html>
И контроллер JavaFX:
@FXML
WebView mapView;
public void initialize() {
loadMap();
}
private void loadMap() {
WebEngine mapEngine = mapView.getEngine();
mapEngine.load(getClass().getResource("/html/index.html").toExternalForm());
addMarker(mapEngine, 55.7453893, 37.8679919);
}
private void addMarker(WebEngine mapEngine, Double lat, Double lng) {
// mapEngine.getLoadWorker().stateProperty().addListener((obs, oldValue, newValue) -> {
// if (newValue == Worker.State.SUCCEEDED){
String funcName = "setMarker";
String params = "{lat: " + "'" + lat + "'" + ", lng: " + "'" + lng + "'" + "}";
JSObject markFunc = (JSObject) mapEngine.executeScript("this");
markFunc.call(funcName, params);
// }
// });
}
У меня нет никаких исключений, но второй маркер не добавлен из кода Java.