Как я могу заставить этот var работать внутри google.maps.LatLng ()

#javascript #jquery #ajax #json #google-maps

#javascript #jquery #ajax #json #google-карты

Вопрос:

Я создал функцию, которая перебирает набор возвращаемых JSON. Затем мне нужно отобразить данные latlong, извлеченные из JSON, внутри google.maps.LatLng(). Дело в том, что когда я пытаюсь это сделать, я просто получаю null, и я не могу понять, почему.

Вот моя функция js

 function addNew(json) {
if(json.length > 0) {
    for(var i = 0; i < json.length; i  ) {

        var callback = function(object) {
            return function(results, status) {

                    var location = new google.maps.LatLng(object.latlong);

                    var image = '/img/markers/'   object.energyrating   '.png';
                    var marker = new google.maps.Marker({
                        map: map,
                        position: location,
                        icon: image
                    });
            };
        }(json[i]);

        geocoder.geocode({ 'address': address }, callback);
    }
} else {
    alert("Sorry, no data was found.");
}
};
  

Однако, если я просто верну object.latlong сам по себе, он будет работать нормально. Ему просто не нравится, когда он находится внутри LatLng (). Это потому, что он уже был установлен до загрузки JSON?

Ответ №1:

Итак, ваш object.latlong выглядит как ‘51.5381031, 0.0495182’, который является строкой. Вам нужно передать два числа в google.maps.Функция LatLng(). Это должно быть просто сделать, я бы предложил использовать .split(), чтобы превратить его в массив из двух элементов.

 var latlng = object.latlong.split(",");
var location = new google.maps.LatLng(latlng[0], latlng[1]);
  

Ответ №2:

Я могу ошибаться, но я думаю, что object.latlong это массив, поэтому вы хотели бы сделать это следующим образом:

 var location = new google.maps.LatLng(object.latlong[0], object.latlong[1]);
  

Комментарии:

1. Это не сработает, поскольку мой массив выглядит следующим образом: $postcodeArray = array( array('latlong' => '51.5381031, 0.0495182', 'energyrating' => 'A'), array('latlong' => '51.5041762, -0.079744', 'energyrating' => 'B'), array('latlong' => '51.4461024, 0.2201219', 'energyrating' => 'C') ); я должен был включить его изначально, извините