是否可以以适当的方式将GeoJson格式的数据加载到这里映射js api?我正在使用AJAX发送来自mysql的数据,该数据以GeoJSON格式化。我不想存储任何kml文件。
答案 0 :(得分:2)
似乎有一个API的“新”版本允许您直接获取GeoJSON数据(https://developer.here.com/javascript-apis/documentation/v3/maps/topics_api_nlp/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());
答案 1 :(得分:1)
旧版2.x API中没有直接可用的GeoJSON解析器,您必须自己编写。由于Google Maps API存在外部GeoJSON parser library,因此只需将Google特定地图对象替换为等效的HERE地图对象即可。
我已根据原始端口创建了一个端口,但保留了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);
}
}
请参阅链接:Simple geoJSON parsing
由于 GeoJSONContainer 是容器的扩展,您还可以使用 addGeoJSON()
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);
}
基本示例用法: - Russia Provinces
您还可以使用与群集组件相同的方式添加数据点并设置样式
样式示例:
当然没有任何保证。
对于当前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());