2017-04-19 4 views
0

Ich habe eine JSON-Daten, die Lat und lange Werte für Städte hat. Ich muss es auf Google Map platzieren und Markierungen darauf setzen. Hier ist mein Code:Einstellung Marker auf Google Map funktioniert nicht

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 

<div id = "map"> 
    <script type="text/javascript"> 
    var map; 
    function init(){ 
     var options = { 
     zoom:11, 
     center : new google.maps.LatLng(37.542571,-121.993037) 
     }; 
     map = new google.maps.Map(document.getElementById("map"),options); 
    }; 
    var jsonData = { 
     "locations": 
     { 
      "location": 
      [ 
       { 
       "id": "0001", 
       "type": "RetailLocation", 
       "address": "Fremont, CA 94538", 
       "latitude":37.542571, 
       "longitude":-121.993037, 
       "$revenue": 10000000 
       }, 
       { 
       "id": "0002", 
       "type": "RetailLocation", 
       "address": "Newark, CA", 
       "latitude": 37.525400, 
       "longitude":-122.037764, 
       "$revenue": 3000000 
       }, 
       { 
       "id": "0003", 
       "type": "RetailLocation", 
       "address": "4100-4198 Pleiades Pl,Union City, CA 94587", 
       "latitude": 37.587546, 
       "longitude":-122.066716, 
       "$revenue": 120000000 
       }, 
       // ... 
      ] 
     } 
    }; 

    $(document).ready(function(){ 
     $.each(jsonData.locations.location,function(key,json){ 
     var latLng = new google.maps.LatLng(json.latitude,json.longitude); 

     var marker = new google.maps.Marker({ 
      position: latLng 
     }); 
     marker.setMap(map); 
     }); 
    }); 
    </script> 
</div> 

Ich habe versucht, das Problem zu debuggen. Ich bekomme die lat und long Werte von jeder Schleife. Wenn ich jedoch versuche, es mithilfe eines Markers auf die Karte zu setzen, wird es nicht angezeigt. Kann mir jemand helfen?

+2

hier ist der Code in einer Geige arbeiten - https://jsfiddle.net/81zteyuh/1/ - die CSS bemerken, und der Code Marker innerhalb init gesetzt, und der Rückruf = init zum script src –

+1

hinzugefügt alternativ gibt es das auch https://jsfiddle.net/81zteyuh/2/ - wieder, die CSS-Hinzufügung, aber in diesem Fall wird kein Callback hinzugefügt und ALL-Code wird in Dokument bereit ausgeführt - und kein Async/Defer erforderlich für die Skript –

Antwort

0

Sie müssen Ihren Rückruf zu Google Script hinzufügen. Dokument. OnReady löst kein kartenbereites Ereignis aus.

<script async defer 
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> 
</script> 
+0

In diesem Fall müssten Sie auch die '$ .each (jsonData.locations.location' in' init' statt jquery's "document ready" verschieben - und die 'div id =" map "benötigt einige Höhe! Ansonsten endet die Karte mit einer Nullhöhe! –