由于毕业设计需要所以打算做一个在java窗口中显示地图的功能。主要设计思路是从桌面端调取百度地图API来在java窗口内显示地图,并能够添加一定的覆盖。
但不知道为什么原因,调用百度地图API的html在浏览器中可以正常加载出地图,但是在javafx窗口中显示全白,无法加载出地图,同时相关的html组件可以正常加载和交互,但是就是地图容器空白,现请求各位能否提供一些帮助。
经过三天的摸索目前的成果如下。
代码部分:
- WindowsManager:
package gis.code.gispro;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WindowsManager extends Application {
public static void main(String[] args) {
launch();
}
public void start(Stage stage){
WebView webView = new WebView();
WebEngine engine = webView.getEngine();
String url = getClass().getResource("test.html").toExternalForm();
engine.load(url);
StackPane root = new StackPane();
root.getChildren().add(webView);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
2 test.html:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>地图展示</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<style>
body,
html,
#container {
overflow: hidden;
width: 100%;
height: 100%;
margin: 0;
font-family: "微软雅黑";
}
.info {
z-index: 999;
width: auto;
min-width: 22rem;
padding: .75rem 1.25rem;
margin-left: 1.25rem;
position: fixed;
top: 1rem;
background-color: #fff;
border-radius: .25rem;
font-size: 14px;
color: #666;
box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
}
</style>
<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=我的AK"></script> //实际使用时已经替换为相应的AK
</head>
<body>
<div id="container"></div>
</body>
</html>
<script>
var map = new BMapGL.Map('container'); // 创建Map实例
map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 12); // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
</script>
预览图如下:
浏览器端:
java窗口: