是“here maps javascript api”支持GeoJSON或任何替代KML的文件格式

时间:2013-08-20 12:46:29

标签: kml geojson here-api

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

2 个答案:

答案 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());