JavaFX - 通过输入更新 WebView 中的变量值
JavaFX - Update values of variables in WebView through input
基本上,我想根据用户输入将谷歌地图上的标记移动到新位置。
我如何实现它:
-
我制作了一个html文件,它负责所有的javascript和maps部分。 设置标记。
-
我已经在JavaFX的WebView中嵌入了该html文件。
-
在我的 JavaFX 应用程序中,有 2 个文本,其中 a 输入一个值,该值成为纬度和经度的新值,因此标记移动。
我卡在哪里
我在 html 文件中有 2 个变量,纬度和 lon。它们决定了标记的位置。
通过我的 JavaFX 应用程序操作列表器,如何更新 lat 和 lon 的值?
在我的代码中
网页文件
<!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代码,并为全局var赋值:
webEngine.executeScript("window.lat = 31.2;");
您也可以将它们放入对象中:
.JS:
window.coordinates = {lat: 100, lon: 250}
爪哇岛:
webEngine.executeScript("window.coordinates.lat = 31.2;");
更新
工作演示:https://gist.github.com/chaschev/7481304。
相关文章:
- JavaScript:单击时相对于父级增加变量值
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 如何从特定页面中提取php变量值
- JavaScript模数未正确递增变量值
- 替换另一个变量对象中的变量值
- mandrill合并标记不接受变量值
- 将变量值从一个javascript传递到另一个javascript
- 如何将变量值附加到另一个变量
- html类名中的数字形式的Javascript变量值
- 如何在C#中获取Javascript变量值
- 如何将C#变量值传递给javascript以使用amcharts
- 正在从addEventListener中获取变量值
- 使用变量值作为'名称标识符'javascript/html
- 为什么在以下代码段中无法访问中的变量值
- 我们可以在初始化variable Angular JS时将变量值声明为未定义吗
- 在HTML/Javascript文件中获取App Inventor 2变量值
- 将变量值传递给另一个函数
- jQuery UI对话框窗体-缺少变量值
- 如何访问具有变量值的对象
- JavaFX - 通过输入更新 WebView 中的变量值