2016-04-01 1 views
1

Ich versuche, ein InfoWindow beim Klicken auf jeden Marker anzuzeigen, der mit der Ortsabfrage platziert wurde. Ich verwende Geolocation, um den Standort zu finden und zeige dann alle Pubs in der Nähe an. Ich möchte in der Lage sein, jeden Marker anzuklicken und es zeigt den Namen des Pubs (place.name) an.Google Maps/Places API JavaScript - Eigenschaft 'setContent' von undefined nicht lesen

Der Fehler, den ich in der Konsole erhalte, wenn ich auf den Marker klicke, lautet: "Kann Eigenschaft 'setContent' von undefined nicht lesen".

// Google Places-Code einschließlich nicht mein Geolocation-Code, der gut arbeitet //

function initMap() { 
myLatLng = new google.maps.LatLng(lat,long); 
var Options = { 
    scrollwheel: false, 
    zoom:15, 
    center: myLatLng, 
    disableDefaultUI: true, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

map = new google.maps.Map(document.getElementById('map'),Options); 
var marker = new google.maps.Marker({ 
    position: myLatLng, 
    map: map, 
    label: "Y", 
});  

     var service = new google.maps.places.PlacesService(map); 
     service.nearbySearch({ 
     location: myLatLng, //Uses geolocation to find the following 
     radius: 500, 
     types: ['bar'] 
     }, callback); 

    }; 

function callback(results, status) { 
    if (status === google.maps.places.PlacesServiceStatus.OK) { 
    for (var i = 0; i < results.length; i++) { 
     createMarker(results[i]); 
    } 
    } 
} 

function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
    map: map, 
    position: place.geometry.location 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent(place.name); 
    infowindow.open(map, this); 
    }); 
} 

Ich habe diesen Code gefunden, der genau das gleiche Problem wie ich hat, wird das Infofenster nicht geladen und der gleiche Fehler ist in der Konsole.

https://jsfiddle.net/jimedelstein/bfdhjsyy/

und hier ist der Fehler, den ich in der Konsole:

http://i.stack.imgur.com/2Pkeb.png

Thank you!

Antwort

0

Die Infowindow-Variable ist nicht definiert. Versuchen Sie infoWindow = new google.maps.InfoWindow irgendwo vor dem Anruf infowindow.setContent();.

Werfen Sie einen Blick hier für Details, wie Infofenster verwenden: https://developers.google.com/maps/documentation/javascript/3.exp/reference#InfoWindow

+0

ich das gerade hinzugefügt haben und der Fehler bleibt gleich. Ich weiß, dass ich etwas vermisse, kann einfach nicht herausfinden, was. –

+0

Könnten Sie das Code-Snippet aktualisieren, damit ich sehen kann, wo Sie es hinzugefügt haben? Stellen Sie außerdem sicher, dass Sie die Karte so definieren, dass sie verknüpft werden soll: 'infoWindow = new google.maps.InfoWindow ({map: map});' – daraul

+1

hat es endlich geschafft zu arbeiten! Ich habe das hinzugefügt "var infowindow = new google.maps.InfoWindow();" info meine createMarker-Funktion. Es wird nun angezeigt, klicken Sie auf das Infowindow mit dem Ortsnamen für jeden. Danke für die Hilfe! :) –

Verwandte Themen