如何从JavaScript访问字典

时间:2017-09-11 14:09:10

标签: javascript google-maps google-maps-api-3

$(function() {
  $.get("https://firststep-2016.appspot.com/Map", function() {
    var dataSet = [{
      "lat": 35.964642464800001,
      "lng": 127.8646424648
    }, {
      "lat": 36.964642464800001,
      "lng": 127.8546305428
    }, {
      "lat": 36.969020999999998,
      "lng": 127.8694266
    }, {
      "lat": 36.968989999999998,
      "lng": 127.86950950000001
    }, {
      "lat": 34.064642464800002,
      "lng": 122.1646424648
    }, {
      "lat": 36.9685652824,
      "lng": 127.8693936768
    }, {
      "lat": 38.064642464800002,
      "lng": 123.1646424648
    }, {
      "lat": 38.064642464800002,
      "lng": 127.6646424648
    }];

    var option = {
      zoom: 11,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      position: location
    }
    var map = new google.maps.Map(document.getElementById('map'), option);

    $.each(dataSet, function(i, value) {
      var marker = new google.maps.Marker({
        position: new google.maps.LatLng(value[i]["lat"], value[i]["lng"]),
        map: map,
        draggable: false
      });

    });
  });
});

我想访问关键值" lat"和" lng"。但是,会发生以下错误。 未捕获的TypeError:无法读取属性' lat'未定义的

1 个答案:

答案 0 :(得分:1)

value是具有objectlat属性的lng,如下所示:

$.each(dataSet,function(i,value){
    var marker = new google.maps.Marker({
    position: new google.maps.LatLng(value["lat"],value["lng"]),
    map: map,
    draggable: false}); 

});

无需value[i]["lat"]

或者(但不必要地)您可以使用value访问dataSet[i]给出的同一对象(因此使用dataSet[i]["lat"]dataSet[i]["lng"])。我只是为了清楚起见指出了这一点,所以希望你能看到发生了什么。

最后,jQuery's实用程序$.each方法是不必要的。你在这里处理一个数组,只需使用forEach

dataSet.forEach(function(latLng) {
   (new google.maps.Marker({
     position:latLng, //see LatLngLiteral (below)
     map:map,
     //draggable is false by default, no need to specify draggable:false
   });
});

LatLng Literal