2014-06-26 4 views
12

Ich verwende GeoJSON als Datenquelle für Google Maps. Ich verwende v3 der API eine Datenschicht zu erzeugen, wie folgt:Benutzerdefinierte Marker für Punkte aus einer GeoJson-Datei mit Google Maps

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script> 
<script> 
var map; 
function initialize() { 

    //Initialise the map 
    var myLatLng = new google.maps.LatLng(53.231472,-0.539783); 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    zoom: 17, 
    center: myLatLng, 
    scrollwheel: false, 
    panControl: false, 
    zoomControl: false, 
    scaleControl: true, 
    disableDefaultUI: true 
    }); 

    //Initialise base folder for icons 
    var iconBase = '/static/images/icons/'; 

    //Load the JSON to show places 
    map.data.loadGeoJson('/api/geo'); 

} 

google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

<div id="map-canvas"></div> 

Die Quelle meiner GeoJSON Daten ist wie folgt:

{ 
    "type": "FeatureCollection", 
    "features": [ 
    { 
     "type": "Feature", 
     "geometry": { 
     "type": "Point", 
     "icon": "/static/images/icons/map-marker-do.png", 
     "coordinates": [ 
      -0.53743, 
      53.23437 
     ] 
     }, 
     "properties": { 
     "name": "Cathedral", 
     "description": "One of Europe’s finest Gothic buildings, once the tallest building in the world that dominates Lincoln's skyline.", 
     "icon": "/static/images/icons/map-marker-do.png" 
     } 
    } 
    ] 
} 

Was ich versuche zu tun, machen die Das Markierungssymbol auf der Karte stammt von der Eigenschaft "Symbol" im JSON, kann jedoch nicht herausfinden, wie die Daten zum Ändern der Standardmarkierung abgerufen werden. Kann mir jemand einen Rat geben? Vielen Dank.

+0

Wo fügen Sie die Markierung? Was machst du mit "iconBase"? – MrUpsidown

+0

@MrUpsidown: Er verwendet eine [** Datenschicht **] (https://developers.google.com/maps/documentation/javascript/datalayer), die Funktionen (zB Marker/Points), die über loadGeoJson geladen werden, werden hinzugefügt automatisch von der API –

+0

Mein schlechtes. Ich habe diese iconBase mit einem Teil der URL im JSON gesehen und habe nicht weiter gedacht :-) – MrUpsidown

Antwort

24

eine Styling-Funktion verwenden (Styling-Funktionen, die Sie ermöglichen Stile auf eine bestimmte Funktion anzuwenden basiert)

map.data.setStyle(function(feature) { 
    return {icon:feature.getProperty('icon')}; 
    }); 
+0

Süß. Vielen Dank. :) – doubleplusgood