У меня есть эта проблема. Я не нашел многого в документе API. Вам нужен объект Marker, и у вас его нет, у вас есть функции, потому что вы загрузили их на слой данных.
Однако в InfoWindow documentation говорится, что вы можете создать MVCObject с набором позиций. Я сделал это ниже в обработчике событий. Вам не нужно класть его на карту, просто обрабатывайте событие click, создавая MVCObject и отправляя его конструктору infoWindow.
Пример:
function initialize(mapID) {
var myLatlng = new google.maps.LatLng(38.951644, -92.334127);
var mapOptions = {
zoom: 12,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById(mapID), mapOptions);
map.data.addGeoJson(realestate_js.geojson_results);
map.data.setStyle(function(feature){
// setStyle executes this function on each feature...
// each feature then receives the "google.maps.Data.StyleOptions" object
// which defines its icons and stuff.
// https://developers.google.com/maps/documentation/javascript/3.exp/reference#Data.StyleOptions
return {
'clickable':true,
'icon':feature.A.icon,
'title':feature.A.address1,
}
});
var fakeMarker = new google.maps.MVCObject();
var infoWindow = new google.maps.InfoWindow({
'content':"",
});
map.data.addListener('click', function(event){
fakeMarker.set('position', {'lat':event.latLng.A, 'lng':event.latLng.F});
var infoWindow = new google.maps.InfoWindow({
'content':"<h1>Info Window Content here</h1><p>omg this so text</p>" + ,
});
infoWindow.open(map, fakeMarker);
});
}
Я считаю, что '' A' и f' являются уменьшенная внутренние имена, и они были разные для меня. Вместо этого я сделал fakeMarker.set ('position', event.latLng) '. –