0

Marker für verschiedene Kategorien erstellen und unterschiedliche Markersymbole für verschiedene Ortstypen verwenden.So testen Sie Google Maps Ortstyp mit if conditional

Was kann in den obigen Code enthalten sein, um zu testen, ob der Ort von verschiedenen Typen ist?

Zum Beispiel mit nur zwei Typen „night_club“ und „Café“ i in dieser Richtung etwas werde:

 function createMarker(place) { 
     var placeLoc = place.geometry.location; 
     var marker = new google.maps.Marker({ 
      map: mapit, 
      position: place.geometry.location, 
      icon: "link-to-icon" 
     }); 
     if (place.type == ['cafe']) { 
      marker.setIcon("link-to-cafe-icon]"); 
     } 
     if (place.type == ['night_club']) { 
      marker.setIcon("link-to-night-club-icon]"); 
     } 
     } 

Oder vielleicht

 function createMarker(place) { 
     var placeLoc = place.geometry.location; 
     if (place.type == ['cafe']) { 
      var marker = new google.maps.Marker({ 
      map: mapit, 
      position: place.geometry.location, 
      icon: "link-to-cafe-icon" 
      }); 
     } 
     if (place.type == ['night_club']) { 
      var marker = new google.maps.Marker({ 
      map: mapit, 
      position: place.geometry.location, 
      icon: "link-to-night-club-icon" 
      }); 
     } 
     } 

Was die richtige ist die Syntax für Ortstyp? In der Google Maps-API-Dokumentation sehe ich nichts dergleichen oder place.getType, etwas, um den Ortstyp für bedingte Anweisungen zu erhalten.

Wie können die Bedingungen funktionieren und verschiedene Symbole für Marker verschiedener Platztypen angezeigt werden?

Antwort

1

Das Places API types Array für jedes Ergebnis zurückgibt, nicht type. Dies liegt daran, dass ein Standort mehrere Typen wie ["restaurant", "lodging"] zugewiesen haben kann. Hier ist die Liste der supported types. Siehe Dokumentation here, wenn Sie "Places search" anrufen oder here, wenn Sie den "Places details" -Aufruf verwenden.

Also muss Ihr Code, um das Symbol zu bestimmen, komplizierter sein als ein einfacher Schalter. Vielleicht können Sie im Array types nach einer Existenz eines bestimmten Typs suchen. Das hängt von Ihren Bedürfnissen ab, Sie müssen es selbst entscheiden, vielleicht etwas (mit der Verwendung von jQuery-Bibliothek!):

function isInArray(a, b) { 
    return !!~a.indexOf(b) 
} 

function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var placeIcon = "link-to-default-icon"; //some default icon, if you don't find a match 
    if(isInArray(place.types, "cafe")){ 
     placeIcon = "link-to-cafe-icon"; 
    }else if(isInArray(place.types, "night_club")){ 
     placeIcon = "link-to-night-club-icon"; 
    }//and so on for other icons 
    var marker = new google.maps.Marker({ 
     map: mapit, 
     position: place.geometry.location, 
     icon: placeIcon 
    }); 
    } 
+0

Danke Ich habe jQuery.inArray verwendet, um jeden passenden Typ zu finden. – javaandy

+0

Ich bin froh, dass ich helfen konnte. Falls Sie jQuery nicht verwenden, habe ich die Antwort aktualisiert, um plain js zu verwenden. –

1

Ich schlage vor, auf diese Weise

function createMarker(place) { 
     var myIcon; 
     var placeLoc = place.geometry.location; 
     switch (place.type) { 
     case 'cafe': 
      myIcon = "link-to-cafe-icon"; 
      break; 
     case 'night_club': 
      myIcon = "link-to-night-club-icon"; 
      break; 

     } 
     var marker = new google.maps.Marker({ 
     map: mapit, 
     position: place.geometry.location, 
     icon: myIcon 
     }); 

    } 
+0

danke es hat nicht ganz funktioniert; Ausgabe war die rote Standard-Google-Marker – javaandy

+0

, aber sobald ich den Schlüssel zu dem Puzzle bekam habe ich Ihre schöne myIcon Struktur in der Implementierung. – javaandy

Verwandte Themen