2012-04-03 5 views
1

Я не могу открыть инфо-окно при выборе многоугольника. Вот мой код:Вызов infoWindow с Google Map V3 API

// Create Polygon 
var polyline = new google.maps.Polygon({path:path, strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2, clickable:false}); 

// Place Polygon on Map 
polyline.setMap(map); 
map.setCenter(new google.maps.LatLng(35.910200,-84.085100)); 

// Create InfoWindow object 
var infowindow = new google.maps.InfoWindow({ 
content: ' ', 
suppressMapPan:true 
}); 

// Create Click Event for Polygon 
eventPolygonClick = google.maps.event.addListener(polyline, 'click', function() { 

    // Load Content 
    infowindow.setContent("CLICKED me"); 
    // Open Window 
    infowindow.open(map, polyline); 

}); 

Я хотел бы также передать полигон и его соответствующего содержания в качестве переменных в eventPolygonClick. Это возможно?

ответ

3

Попробуйте это, используйте latlng, полученный от события click для создания маркера, и используйте это как второй параметр в вызове infowindow.open.

eventPolygonClick = google.maps.event.addListener(polyline, 'click', function(event) { 
    var marker = new google.maps.Marker({ 
     position: event.latLng 
    }); 

    infowindow.setContent("CLICKED me"); 
    infowindow.open(map, marker); 

}); 
+0

Это правильный ответ. Re: Ответ Хайтора: событие клика может быть связано с полилинией, и пройденное событие будет точкой где-то вдоль полилинии. Не нужно добавлять скрытый маркер. Вы также можете использовать контент полилинии, но я не уверен, что это значит. –

+0

Спасибо, @javram. У меня все еще нет успеха. Можете ли вы просмотреть мой код по адресу http://cspc.net/neighborhoods/neighborhoods2.html. Я реализовал, как вы указали выше ... но ничего не происходит, когда я нажимаю и не отправляется ошибка. – mcmonty

+0

Похоже, у вас установлен полилиний как clickable: false. попробуйте полностью удалить атрибут clickable из параметров полилинии, после этого вы должны быть добры. – javram

0

Насколько я пробовал, многоугольник нельзя использовать в качестве якоря для InfoWindow. Попробуйте добавить маркер где-то внутри или на краю многоугольника, setVisible (false), а затем infowindow.open (карта, маркер)

Я не слишком ясно понял, когда вы сказали, что полигон. Я считаю, что вы можете свободно использовать свою переменную «полилиния», так как для передачи ее с помощью функции (события), вероятно, нет. Вы пробовали любой вариант?