如何定期从javafx向google地图添加/删除标记?
我是javaFx新手,尝试创建一个简单的应用程序,定期在google地图上添加和删除标记。我让我的javaFx加载google地图,但我无法让它添加标记。错误是: netscape.javascript.JSException:ReferenceError:找不到变量: 清晰标记 以下是我的java代码:如何定期从javafx向google地图添加/删除标记?,javafx,google-maps-markers,Javafx,Google Maps Markers,我是javaFx新手,尝试创建一个简单的应用程序,定期在google地图上添加和删除标记。我让我的javaFx加载google地图,但我无法让它添加标记。错误是: netscape.javascript.JSException:ReferenceError:找不到变量: 清晰标记 以下是我的java代码: public class WebMap extends Application { private Scene scene; private MyBrowser myBrow
public class WebMap extends Application {
private Scene scene;
private MyBrowser myBrowser;
// private LocationClickHandler handler;
// private Vector<Button> buttons;
@Override
public void start(Stage primaryStage) {
// buttons = new Vector<Button>();
//moderator = new Moderator();
// handler = new LocationClickHandler();
primaryStage.setTitle("tracking-simulator");
myBrowser = new MyBrowser();
//moderator.registerAddIconListener(myBrowser);
VBox mainbox = new VBox();
mainbox.getChildren().add(myBrowser);
// mainbox.getChildren().add(generateEntitiesButtonBox());
// mainbox.getChildren().add(generateSensorsButtonBox());
scene = new Scene(mainbox, 1280, 760);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
class MyBrowser extends Region {
HBox toolbar;
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
// ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
public MyBrowser() {
webView.setMinSize(1280, 400);
final URL urlGoogleMaps = getClass().getResource("googlemap.html");
webEngine.load(urlGoogleMaps.toExternalForm());
getChildren().add(webView);
for (int n = 0; n < 10; n++) {
Platform.runLater(new UpdateGroupTrack());
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(WebMap.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private class UpdateGroupTrack implements Runnable {
@Override
public void run() {
try {
double lat = 37.39822;
double lon = -121.9643936;
Random ran = new Random();
lat = lat + 100.0 / ran.nextInt(1000);
lon = lon + 100.0 / ran.nextInt(1000);
System.out.println("RUNNING===============");
// webEngine.executeScript("addMarker('" + lat + "', '" + lon + "');");
webEngine.executeScript("clearMarkers()");
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
}
公共类WebMap扩展应用程序{
私密场景;
私用浏览器;
//私有位置ClickHandler;
//专用向量按钮;
@凌驾
公共无效开始(阶段primaryStage){
//按钮=新向量();
//主持人=新主持人();
//handler=新位置ClickHandler();
primaryStage.setTitle(“跟踪模拟器”);
myBrowser=新建myBrowser();
//主持人。registerAddIconListener(myBrowser);
VBox mainbox=新的VBox();
mainbox.getChildren().add(myBrowser);
//mainbox.getChildren().add(generateEntitiesButtonBox());
//mainbox.getChildren().add(generateSensorsButtonBox());
场景=新场景(mainbox,1280760);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
应用程序启动(args);
}
类MyBrowser扩展区域{
HBox工具栏;
WebView WebView=新建WebView();
WebEngine WebEngine=webView.getEngine();
//ScheduledExecutorService executor=执行者。newScheduledThreadPool(1);
公共MyBrowser(){
setMinSize(1280400);
最终URL urlGoogleMaps=getClass().getResource(“googlemap.html”);
load(urlGoogleMaps.toExternalForm());
getChildren().add(webView);
对于(int n=0;n<10;n++){
runLater(新的UpdateGroupTrack());
试一试{
睡眠(1000);
}捕获(中断异常例外){
Logger.getLogger(WebMap.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
私有类UpdateGroupTrack实现可运行{
@凌驾
公开募捐{
试一试{
双lat=37.39822;
双lon=-121.9643936;
Random ran=新的Random();
lat=lat+100.0/ran.nextInt(1000);
lon=lon+100.0/ran.nextInt(1000);
System.out.println(“运行====================”;
//executeScript(“addMarker(“+lat+”,“+lon+”);”;
executeScript(“clearMarkers()”);
}捕获(可丢弃的t){
t、 printStackTrace();
}
}
}
}
}
这是我的html:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100%; background-color: #666970; }
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
var map;
var markers = [];
function initialize() {
var latlng = new google.maps.LatLng(37.39822, -121.9643936);
var myOptions = {
zoom: 14,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
navigationControl: false,
streetViewControl: false,
backgroundColor: "#666970"
};
document.geocoder = new google.maps.Geocoder();
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
document.zoomIn = function zoomIn() {
var zoomLevel = document.map.getZoom();
if (zoomLevel <= 20)
document.map.setZoom(zoomLevel + 1);
}
document.zoomOut = function zoomOut() {
var zoomLevel = document.map.getZoom();
if (zoomLevel > 0)
document.map.setZoom(zoomLevel - 1);
}
document.setMapTypeRoad = function setMapTypeRoad() {
document.map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
}
document.setMapTypeSatellite = function setMapTypeSatellite() {
document.map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
}
document.setMapTypeHybrid = function setMapTypeHybrid() {
document.map.setMapTypeId(google.maps.MapTypeId.HYBRID);
}
document.setMapTypeTerrain = function setMapTypeTerrain() {
document.map.setMapTypeId(google.maps.MapTypeId.TERRAIN);
}
document.goToLocation = function goToLocation(searchString) {
document.geocoder.geocode({'address': searchString}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
document.map.setCenter(results[0].geometry.location);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
}
// Add a marker to the map and push to the array.
function addMarker(lat, lon) {
var location = new google.maps.LatLng(lat, lon);
var marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
}
// Sets the map on all markers in the array.
function setAllMap(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setAllMap(null);
}
// Shows any markers currently in the array.
function showMarkers() {
setAllMap(map);
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>
html{高度:100%}
正文{高度:100%;边距:0px;填充:0px}
#地图画布{高度:100%;背景色:#666970;}
var映射;
var标记=[];
函数初始化(){
var latlng=新的google.maps.latlng(37.39822,-121.9643936);
变量myOptions={
缩放:14,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP,
mapTypeControl:false,
导航控制:错误,
街景控制:错误,
背景颜色:“666970”
};
document.geocoder=新的google.maps.geocoder();
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
document.zoomIn=函数zoomIn(){
var zoomLevel=document.map.getZoom();
如果(缩放级别0)
document.map.setZoom(zoomLevel-1);
}
document.setMapTypeRoad=函数setMapTypeRoad(){
document.map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
}
document.setMapTypeSatellite=函数setMapTypeSatellite(){
document.map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
}
document.setMapTypeHybrid=函数setMapTypeHybrid(){
document.map.setMapTypeId(google.maps.MapTypeId.HYBRID);
}
document.setMapTypeTerrain=函数setMapTypeTerrain(){
document.map.setMapTypeId(google.maps.MapTypeId.TERRAIN);
}
document.goToLocation=函数goToLocation(searchString){
document.geocoder.geocode({'address':searchString}),函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
document.map.setCenter(结果[0].geometry.location);
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
}
}
//将标记添加到地图并推送到阵列。
功能添加标记(横向、纵向){
var location=new google.maps.LatLng(lat,lon);
var marker=new google.maps.marker({
位置:位置,,
地图:地图
});
标记器。推(标记器);
}
//在阵列中的所有标记上设置贴图。
函数setAllMap(映射){
对于(var i=0;i