gpt4 book ai didi

JavaFX - 通过输入更新 WebView 中变量的值

转载 作者:行者123 更新时间:2023-11-30 17:46:48 25 4
gpt4 key购买 nike

基本上,我想根据用户输入将谷歌地图上的标记移动到新位置。

我希望如何实现它:

  1. 我制作了一个 html 文件,它处理所有 javascript 和 map 部分。标记已设置。

  2. 我已将该 html 文件嵌入到 JavaFX 的 WebView 中。

  3. 在我的 JavaFX 应用程序中有 2 个文本域,其中 a 输入一个值,该值成为纬度和经度的新值,因此标记移动。

我卡在哪里

我在 html 文件中有 2 个变量,lat 和 lon。它们决定了标记的位置。

如何通过我的 JavaFX 应用程序 actionlistners 更新纬度和经度的值?

在我的代码中

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);

}
}

}

最佳答案

您可以通过分配给在网页上全局可见的 window 对象来将它们置于全局范围内。即

在 JS 中:

window.lat = 30.76;
window.lon = 76.74;

在 Java 中,executeScript 将在网页范围内执行 JS 代码,并为全局变量赋值:

webEngine.executeScript("window.lat = 31.2;");

您也可以将它们放入对象中:

JS:

window.coordinates = {lat: 100, lon: 250}

Java:

webEngine.executeScript("window.coordinates.lat = 31.2;");

更新

工作演示:https://gist.github.com/chaschev/7481304 .

关于JavaFX - 通过输入更新 WebView 中变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19989685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com