谷歌地图API | JSON错误?

时间:2017-11-22 04:32:24

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

每当我尝试使用markercluster将坐标加载到我的项目时,我都会遇到一个非常奇怪的错误。每当我将google.maps.LatLng添加到lat和lng我从JSON文件中提取时,它会将其转换为以下错误。现在我要做的就是将坐标记录到控制台。我从来没有见过这个,希望有人可以帮助我。

这是我的JSON文件加载的内容:

_.Ge {__gm: {…}, gm_accessors_: {…}, position: _.F, gm_bindings_: {…}, clickable: true, …}

这是我的代码

function initMap(){
  var usa =   new google.maps.LatLng(37.090240, -95.712891);
  var mapZoom = 4;
  var markers = [];
  var stateLat = [];
  var stateCoord = [];
  console.log(stateCoord);

  markStates(stateCoord);

  var options = {
    'zoom': mapZoom,
    'center': usa,
    'styles': styles
  };

  var map = new google.maps.Map(document.getElementById("map"), options);
  //var latLng = new google.maps.LatLng(markers);
  //var marker = new google.maps.Marker({'position': markers});
  // var markerCluster = new MarkerClusterer(map, markers);
  var markerCluster = new MarkerClusterer(map, stateCoord);

}

function markStates(sets){
  var coordLink = 'http://xxxxxx/xxx-xxxxxx/_json/states-coord.json';

  $.ajax({
    url: coordLink,
    type: 'GET',
    dataType: 'json'
  })
  .done(function() {
    //console.log("success states loaded");
    $.getJSON(coordLink, function(data){
      $.each(data.usa, function(index, el) {
        var latLng = new google.maps.LatLng(el.coordinates.lat, el.coordinates.lng);
        var marker = new google.maps.Marker({position: latLng});
        //var latLng = [lat, lng];
        sets.push(marker);

      });
    });

  })
  .fail(function() {
    console.log("error on states");
  });
}

JSON文件示例:

{

    "usa": [{
            "state": "Alabama",
            "stateInit": "AL",
            "coordinates": {
                "lat": 32.806671, "lng": -86.791130
            }
        },
        {
            "state": "Alaska",
            "stateInit": "AK",
            "coordinates": {
                "lat": 61.370716, "lng": -152.404419
            }
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

您正在注销标记,该标记是Google Marker对象的一个​​实例。那不是错误。如果你想获得坐标,你需要具体询问它们:

console.log(marker.getPosition())

返回LatLng个对象。可能也不是你想要的。因此,您需要将其记录为可读的内容:

console.log(marker.getPosition().toString())
// alternatively
console.log(marker.getPosition().toJSON())
标记对象的

Here's the full api(实际上是所有对象。)