2017-10-10 4 views
-1

Ich habe Google Maps mit Json und verwendete Datenbank postgresqlGoogle Maps API kann nicht Marker Display mit Json (v3)

dies ist mein Code

<script type="text/javascript"> 
    var map; 

    var national = [{"lng":"-6.173319","city":"JAKARTA","lat":"106.818672"}]; 

    function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(-0.789275,113.921327), 
     zoom: 5, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var infoWindow = new google.maps.InfoWindow(); 
    var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

    $.getJSON('json_city.json', function(data) { 
    $.each(data.national, function(index, item) { 
     var myLatlng = new google.maps.LatLng(item.lat, item.lng); 
     alert(myLatlng); 
     var marker = new google.maps.Marker({ 
     position: myLatlng, 
     map: map, 
     title: "text "+item.city 
     }); 
    }); 
    }); 

    // Initialize the map 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 

</script> 

Lat und lang verwendeten Zeichentyp (Text) . Meine Karten können angezeigt werden, aber mein Marker kann nicht angezeigt werden.

+1

Sie haben einen Tippfehler in Ihrer 'nationalen' Variable; "lat" und "lng" sind rückwärts (sollten "lat": "-6.173319", "lng": "106.818672") sein. ([Geige] (http://jsfiddle.net/geocodezip/f3rwcdyd/)) – geocodezip

+0

Vielen Dank Ihre Korrektur @geocodezip –

Antwort

0

Google Maps benötigt Koordinaten für den LatLng-Konstruktor als Zahlen, nicht als Zeichenfolgen. Versuchen Sie:

var myLatlng = new google.maps.LatLng(parseFloat(item.lat), parseFloat(item.lng)); 
+0

Ich habe versucht, aber hat nicht funktioniert. Ich hatte in console.log ("item.lat") überprüft; und console.log ("item.lng"); und mein Google Chrome kann kein Protokoll anzeigen. @duncan –

+0

Wie sieht 'data.national' aus? Du hast 'var national' oben in deinem JS fest programmiert, aber es wird nicht benutzt. – duncan