是否可以以适当的方式将 GeoJson 格式的数据加载到这里 maps js api 中?我正在使用 AJAX 发送来自 mysql 的数据,该数据采用 GeoJSON 格式。我不想存储任何 kml 文件。
问问题
1672 次
2 回答
2
旧版 2.x API中没有直接可用的 GeoJSON 解析器,您必须自己编写。由于 Google Maps API 存在外部 GeoJSON解析器库,因此只需将 Google 特定的地图对象替换为等效的 HERE 地图对象即可。
我创建了一个基于原始端口的端口,但在此处保留 HERE 地图语法
GeoJSONContainer的基本用法是通过parseGeoJSON()方法,如下:
function extend(B, A) {
function I() {}
I.prototype = A.prototype;
B.prototype = new I();
B.prototype.constructor = B;
}
function createGeoJsonParser(){
extend(GeoJSONContainer, nokia.maps.map.Container);
parser = new GeoJSONContainer();
}
function parseJson(jsonObject){
result = parser.parseGeoJSON(jsonObject);
if (parser.state == "finished") {
map.objects.addAll(result);
map.set("center", map.objects.get(0).getBoundingBox().getCenter());
map.addListener("click" , function(evt) {
var text = JSON.stringify(evt.target.properties);
bubble = infoBubbles.addBubble(text!== undefined ?
text : "properties undefined",
evt.target.getBoundingBox().getCenter());
}, false);
} else {
console.log(result);
}
}
查看链接:简单的geoJSON解析
由于GeoJSONContainer是Container的扩展,您还可以使用addGeoJSON()将 geoJSON 数据直接添加到地图上
var err = resultSet.addGeoJSON(jsonManager.object);
if (resultSet.state == "finished") {
map.zoomTo(container.getBoundingBox());
container.addListener("click" , function(evt) {
infoBubbles.addBubble(evt.target.properties.Description,
evt.target.getBoundingBox().getCenter());
}, false);
} else {
alert(err);
}
基本示例使用: -俄罗斯各省
您还可以使用与聚类组件相同的方式添加和设置数据点样式
样式示例:
当然,它没有任何保证。
对于当前的 3.x API,geojson 阅读器作为标准包含在内,您可以参考以下 fxxxit 的答案:
var reader = new H.data.geojson.Reader('/path/to/geojson/file.json');
reader.parse();
//assuming that map already exists
map.addLayer(reader.getLayer());
于 2013-08-20T15:56:59.060 回答
2
似乎有一个“新”版本的 API 允许您直接获取 GeoJSON 数据(https://developer.here.com/documentation/maps/api_reference/H.data.geojson.Reader.html)
var reader = new H.data.geojson.Reader('/path/to/geojson/file.json');
reader.parse();
//assuming that map already exists
map.addLayer(reader.getLayer());
于 2015-06-09T03:57:09.177 回答