-1

是否可以以适当的方式将 GeoJson 格式的数据加载到这里 maps js api 中?我正在使用 AJAX 发送来自 mysql 的数据,该数据采用 GeoJSON 格式。我不想存储任何 kml 文件。

4

2 回答 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解析

由于GeoJSONContainerContainer的扩展,您还可以使用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 回答