所以我試圖在用java編寫的桌面應用程序中實現谷歌地圖。 事實證明,這是一項比我想象的更困難的任務,尤其是我缺乏技能。 我以前從未提交過任何問題,但我會盡力按照我在研究中看到的方式完成。從java發送字符串到javascript時,「無法找到變量」。
這是我的java類:
package GUI;
import java.net.URL;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class JavaFXGoogleMaps extends Application {
private Scene scene;
MyBrowser myBrowser;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("SHEEPTRACKER3000");
primaryStage.setWidth(400);
primaryStage.setHeight(300);
myBrowser = new MyBrowser();
scene = new Scene(myBrowser, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
static class MyBrowser extends Region {
HBox toolbar;
static WebView webView = new WebView();
static WebEngine webEngine = webView.getEngine();
public MyBrowser() {
final URL urlGoogleMaps = getClass().getResource(
"GoogleMapsV3.html");
webEngine.load(urlGoogleMaps.toExternalForm());
webEngine.setJavaScriptEnabled(true);
getChildren().add(webView);
webEngine.setOnAlert(new EventHandler<WebEvent<String>>() {
@Override
public void handle(WebEvent<String> arg0) {
System.out.println("We are here");
webEngine
.executeScript("document.getElementById('test').innerHTML = 'the new text';");
webEngine.executeScript("document.setNewMarker()");
webEngine
.executeScript("document.setNewMarkerWithParameters(nAME-63.44-10.39)");
// webEngine.load(urlGoogleMaps.toExternalForm());
// getChildren().add(webView);
}
});
}
}
}
這裏是我的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: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAGiYaSPuB9Mx2t37gy9yhUR_QOUwdTWE0&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myCenter = new google.maps.LatLng(63.43,10.39)
var mapOptions = {
center: myCenter,
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
var tilesloaded=true;
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
if(tilesloaded ==true){
window.alert();
tilesloaded=false;
}
});
}
document.setNewMarker = function setNewMarker(){
var marker=new google.maps.Marker({
position:new google.maps.LatLng(63.43,10.39),
icon:'sheep1.png',
map:map,
});
}
document.setNewMarkerWithParameters = function setNewMarkerWithParameters(info){
var array = info.split('-');
var a = array[0], b = array[1], c = array[2];
var lat = parseFloat(b);
var longi = parseFloat(c);
var name = parseString(a);
var marker=new google.maps.Marker({
position:new google.maps.LatLng(lat,longi),
icon:'sheep1.png',
map:map,
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<h1 id="test"> Does dis work?</h1>
<div id="map_canvas" style="width:400px; height:300px"></div>
</body>
</html>
我一直在這一點上有一段時間了,在學校的項目限期關閉 我收到錯誤信息「無法找到變量名」,我不明白這是什麼意思。爲了把它放在上下文中,我試圖在java中創建一個函數,其中我遍歷表單[name-lat-long]上的一個數組並添加標記到地圖。但是,我無法到達那裏,因爲我得到的錯誤。名稱變量尚未使用,因爲我試圖在繼續之前使代碼的這部分工作。但後來我希望能夠點擊標記並在該位置找到對象的名稱。 任何反饋都將不勝感激。
*你在哪裏「得到錯誤信息」?在你的Java代碼中? Javascript? –