0

Ich versuche, verschiedene marker icons für die verschiedenen arten von küche für restaurants aus der nahe gelegenen suchen in google places.google plätze api verwenden benutzerdefinierte marker icons basierend auf restaurant küche

Als ein Beispiel, wenn ein Restaurant eine Pizzeria ist, sollte es ein benutzerdefiniertes Pizzeria-Symbol anzeigen (das ich lokal gespeichert habe) oder wenn ein Restaurant ein Burger-Platz ist, sollte es ein Burger-Symbol anstelle des Standard-Restaurantsymbols anzeigen.

Soweit ich gesucht habe, gibt es nur die Möglichkeit benutzerdefinierte Icons für den Typ des Ortes zu verwenden (zB "Restaurant", "Bibliothek", "Parken" ...) und ich finde keinen Weg um die Subtypen des Restauranttyps zu erhalten. Gibt es eine Möglichkeit, dieses Problem zu umgehen? Hier

ist ein Beispiel-Code der Suche und Callback-Funktion, die wirklich den Marker zeichnen:

 var MARKER_PATH = 
    "https://developers.google.com/maps/documentation/javascript/images/marker_green"; 
unction search() { 
    var search = { 
    bounds: map.getBounds(), 
    types: ["restaurant"] 
    }; 

    places.nearbySearch(search, callback); 
} 

function callback(results, status) { 
    if (status === google.maps.places.PlacesServiceStatus.OK) { 
    document.getElementById("lat").value = results[0].geometry.location.lat(); 
    document.getElementById("lng").value = results[0].geometry.location.lng(); 
     // Create a marker for each restaurant found, and 
     // assign a letter of the alphabetic to each marker icon. 
     for (var i = 0; i < results.length; i++) { 
     var markerLetter = String.fromCharCode("A".charCodeAt(0) + i % 26); 
     var markerIcon = MARKER_PATH + markerLetter + ".png"; 
     // Use marker animation to drop the icons incrementally on the map. 
     markers[i] = new google.maps.Marker({ 
      position: results[i].geometry.location, 
      animation: google.maps.Animation.DROP, 
      icon: markerIcon 
     }); 
     // If the user clicks a restaurant marker, show the details of that restaurant 
     // in an info window. 
     markers[i].placeResult = results[i]; 
     google.maps.event.addListener(markers[i], "click", showInfoWindow); 
     setTimeout(dropMarker(i), i * 100); 
     addResult(results[i], i); 
     } 
    } 
    } 

Meine Idee, die Art der Küche zu bekommen war durch die Schlüsselwort Eigenschaft der erzeugten Ergebnisse mit, so etwas wie diese (nur zwei Küche Typen zum Beispiel):

if (results[i].keyword === "pizzaria") { 
      markerIcon = "img/icons/pizzaria.png"; 
     } else if (results[i].keyword === "burger") { 
      markerIcon = "img/icons/fastfood.png"; 
     } 

Leider funktioniert das nicht und ich Stahl Wunder, wenn es eine Möglichkeit, es zu lösen ist ..

Antwort

0

Nein , Sie können nicht versuchen, einige "Pizzeria" zu finden, wie von this Artikel der Google-Dokumentation angegeben.

Sie können jedoch die types (wie Keywords) der Restaurants beraten und versuchen, "Pizzeria" in ihnen zu finden:

if (results[i].name.indexOf ("pizzeria") || results[i].name.indexOf ("pizza hut") /*...*/) { 
      markerIcon = "img/icons/pizzaria.png"; 
     } else if (results[i].name.indexOf ("burger")) { 
      markerIcon = "img/icons/fastfood.png"; 
     } 

Sag mir, wenn Sie einige Fragen haben.

Viel Glück.

Sphinx

0

Sie würden mehr Details zu den einzelnen Platz benötigen, als es zur Zeit verfügbar ist.

Die Orte API stellt alle Restaurants mit „Restaurant“ in seinem types Feld, würden Sie zusätzlich benötigen, detailliertere Typen wie als „hamburger_restaurant“ oder „italian_restaurant“, wie sie in Google Maps (example) angezeigt. Dies ist eine Funktion, die Sie abonnieren können:

35822953: Detaillierte/primäre Ortstypen (wie in Google Maps angezeigt)

Verwandte Themen