1
基本上我想在google map上將標記移動到新的位置,一旦用戶輸入。JavaFX - 通過輸入更新WebView中的變量值
如何我期待實現它:
我做了一個HTML文件,這需要所有的JavaScript和地圖部分的護理。標記已設置。
我已經將該文件嵌入到JavaFX的WebView中。
在我的JavaFX應用程序中,有2個textfied,其中a輸入一個值,併成爲緯度和經度的新值,因此標記移動。
我在哪裏」卡住
我在HTML文件中,緯度和經度2個變量。他們決定了標記的位置。
通過我的JavaFX應用程序actionlistners,我該如何更新lat和lon的值?
在這裏,在我的代碼
HTML文件
<!DOCTYPE html>
<html>
// stuff and stuff
var map;
function initialize() {
var lat = 30.76;
var lon = 76.74;
var myLatlng = new google.maps.LatLng(lat, lon);
var mapOptions = {
zoom: 12,
center: new google.maps.LatLng(30.75, 76.78),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
//stuff and stuff
,這裏是我的JavaFX文件
public class GoogleApp extends Application {
private Scene scene;
MyBrowser myBrowser;
String lat;
String lon;
public static void main(String[] args) {
launch(args);
}
//stuff and stuff
class MyBrowser extends Pane{
HBox toolbar;
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
public MyBrowser(){
final URL urlGoogleMaps = getClass().getResource("demo.html");
webEngine.load(urlGoogleMaps.toExternalForm());
getChildren().add(webView);
final TextField latitude = new TextField("latitude");
final TextField longitude = new TextField("longitude");
Button update = new Button("Update");
update.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
lat = latitude.getText();
lon = longitude.getText();
System.out.println(lat + lon);
}
});
getChildren().addAll(latitude, longitude, update);
}
}
}
似乎沒有工作。爲了確認它們是否得到更新,我在html文件中顯示了lat/lon變量的值(document.getElementById('lbllatitude')。innerHTML = window.lat;)。而且,在執行(webEngine.executeScript(「window.lat = 45;」);)時,它根本不會改變。 – satnam
恐怕原來的演示程序中包含了一些錯誤(例如,應該只有'marker'而不是'document.marker')。我創建了一個工作要點:https://gist.github.com/chaschev/7481304。 –
是的!它的工作!非常感謝 – satnam