根据addGeoJson将GeoJson变量添加到GoogleMap

时间:2015-07-17 12:34:18

标签: javascript json google-maps

我想要的是什么:

  • 从json中提取lat,lon值到一个像GeoJson一样构建的新变量
  • 将新变量加载到GoogleMap并创建一个多边形

这是json,它包含所需的lat,lon值:

{
"rangemap": {
    "rangemaps": [
        {
            "polyline": [
                {
                    "lat": 48.1914210319519,
                    "lon": 11.3745188713074
                },
                {
                    "lat": 48.1789970397949,
                    "lon": 11.3705492019653
                },
                ... and so on

这是我要加载到地图的变量:

var rangemap_eco = {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": {
            "type": "Polygon",
             "coordinates": [

             ]
        }
      }
    ]
};

使用此代码,我将json中的坐标提取到"坐标" -array in my variable:

$scope.parseRM_eco = function(){
    var first;
    var last;

    for(var z=0; z < vm.rangespider.rangemap.rangemaps[0].polyline.length; z++) {
        first = vm.rangespider.rangemap.rangemaps[0].polyline[z].lon;
        last = vm.rangespider.rangemap.rangemaps[0].polyline[z].lat;
        arr[z] = '['+first+','+last+']';
    }
    rangemap_eco.features[0].geometry.coordinates.push(arr);
    console.log(rangemap_eco);
}

使用 map.data.addGeoJson(rangemap_eco); 我将变量加载到地图。

但我总是得到一个错误 &#34;错误:在属性&#34;功能&#34;:在索引0:在属性&#34;几何&#34;:在属性&#34;坐标&#34;:在索引0:在索引0 :不是数组&#34;

我真的不知道错误在哪里......

1 个答案:

答案 0 :(得分:0)

arr[z] = '['+first+','+last+']';

应该是

arr[z] = [first, last];

或更好

arr.push([first, last]);

即。 "coordinates"是一个数组数组

coordinates: [
    [lon, lat], [lon, lat], ... etc
]