将json元素添加到变量

时间:2018-01-03 14:32:59

标签: javascript json google-maps

我有些麻烦。我想配置谷歌地图并从json文件添加点。我想添加' lat'和' lng'我的特色'变量(循环'结果')的每个json文件元素,但它不起作用。

json文件

{"act":"success","totalResults":122,"results":[{"id":"1","lat":"50.162292","lng":"-5.089257"},{"id":"2","lat":"50.164001","lng":"-5.069998"},{"id":"3","lat":"50.106697","lng":"-5.549815"},{"id":"4","lat":"50.129349","lng":"-5.515587"},{"id":"5","lat":"50.129333","lng":"-5.515833"},{"id":"6","lat":"50.128429","lng":"-5.519022"},{"id":"7","lat":"50.186115","lng":"-5.421418"},{"id":"8","lat":"50.225258","lng":"-5.274623"},{"id":"9","lat":"50.261471","lng":"-5.067650"}]}

脚本代码

<script>
      var map;
      function initMap() {
        map = new google.maps.Map(document.getElementById('mapGoogle'), {
          zoom: 7,
          center: new google.maps.LatLng(51.509865, -0.118092),
          mapTypeId: 'roadmap',
          gestureHandling: 'greedy',
          disableDefaultUI: true
        });

        var myjson;
        $.getJSON("http://app.regain-app.com/rest/V1/points/get?lat=50.164001&lng=-5.069998&distance=26", function(json){
            myjson = json;

            console.log(myjson);
        });

        var icons = {
          info: {
            icon: 'http://www.picpng.com/uploads/small/Google_Map_Marker_Red_Peg_77453.Png'
          }
        };

        var features = [
          {
            position: new google.maps.LatLng(50.162292, -5.089257),
            type: 'info'
          }, {
            position: new google.maps.LatLng(50.164001, -5.069998),
            type: 'info'
          }, {
            position: new google.maps.LatLng(50.106697, -5.549815),
            type: 'info'
          }
        ];

        myjson.results.forEach(function(object){

        });

        // Create markers.
        features.forEach(function(feature) {
          var marker = new google.maps.Marker({
            position: feature.position,
            icon: icons[feature.type].icon,
            map: map
          });
        });
      }
    </script>

我将不胜感激任何帮助。 :)

1 个答案:

答案 0 :(得分:0)

这里有很多工作要做。

首先,你的循环。 你的循环在错误的地方。

var myjson;
        $.getJSON("http://app.regain-app.com/rest/V1/points/get?lat=50.164001&lng=-5.069998&distance=26", function(json){
            myjson = json;

            console.log(myjson);
        });

这是您的程序设置变量myjson的地方。但是,它只发生在回调中,因此您不能在代码中循环它们,所以请输入以下代码:

myjson.results.forEach(function(object){

});
回调中的

,并在回调之前声明你的功能变量。

现在进入你的forEach循环:

features.push({
        position: new google.maps.LatLng(parseInt(object.lat), parseInt(object.lng)),
        type: 'info'
      })

push会向数组添加一个新对象,该对象在括号中定义。