2014-01-30 5 views
1

Я думаю, что знаю, что такое ошибка: широта и долгота маркеров - это Nan вместо координат ... Но почему ???
Если я проверяю название (alert(marker.markerTitle);) имеет правильные значения Если я проверить позицию (alert(marker.position);) возвращает NaNмаркеры google maps не отображаются

В HTML:

<script type="text/javascript"> 
     var serviceUrl = {"markers":[{markerLatitude:"12,5741",markerLongitude:"55,70612",markerTitle:"Krudttønden"},{markerLatitude:"11,84656",markerLongitude:"55,96518",markerTitle:"Halsnæs bryghus"},]} 
    </script> 
         <div id="google-map"></div> 

Сценарий:

if (jQuery('#google-map')[0]) { 
    var map_canvas = document.getElementById('google-map'); 

    var startPosition = new google.maps.LatLng('55.92', '10.90'); 
    var mapOptions = { center: startPosition, zoom: 8, streetViewControl: true, panControl: true, draggable: true, mapTypeControl: true, maxZoom: 16, minZoom: 3 }; 

    var map = new google.maps.Map(map_canvas, mapOptions); 

    for (var i = 0; i < serviceUrl.markers.length; i++) { 
    var data = serviceUrl.markers[i]; 
    var infowindow = new google.maps.InfoWindow({ 
     content: '<div class="info-window"><h3>' + data.markerTitle + '</h3><p class="teaser"></p></a></div>' 

    }); 

    var marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(data.markerLatitude, data.markerLongitude), 
     map: map, 
     title: data.markerTitle, 
     infowindows: infowindow 
    }); 

    //alert(marker.position); 
    google.maps.event.addListener(marker, 'click', function() { 
     this.infowindows.open(map, this); 
    }); 
    } 
    test = serviceUrl; 
    console.log(test.markers[0].markerLatitude); 
} 

ответ

0

Поскольку входными значениями являются строки

markerLatitude:"12,5741", markerLongitude:"55,70612" 

вы должны использовать parseFloat() данных при создании маркеров: LatLng() метод ожидает номера. Ваш код должен быть:

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(parseFloat(data.markerLatitude), 
            parseFloat(data.markerLongitude)), 
    map: map, 
    title: data.markerTitle, 
    infowindows: infowindow 
}); 
Смежные вопросы