2015-01-21 5 views
-1

Я рисую набор полигонов на Картах Google и хотел бы, чтобы InfoWindow всплывал в центре каждого, когда я нажимаю на него.Настройка InfoWindow Postion в Картах Google

function attach_info_window(polygon, centroid, title){ 
    var info_window = new google.maps.InfoWindow({ 
     content: title, 
     position: { lat: centroid[0], lng: centroid[1] } 
    }); 

    google.maps.event.addListener(polygon, 'click', function() { 
     info_window.open(map, this); 
    }); 
    } 

Проблема в том, что окно появляется в углу северо-запада каждый раз. Параметр «позиция», кажется, полностью игнорируется. Я также попытался установить положение на клик с

event.latLng 

Но это возвращает неопределенное значение, даже если API Docs указать его, так что не работает. Любопытно, что это работает отлично, если я использую маркер вместо полигонов.

+1

Что такое, что центр тяжести? Это просто массив с [0] и [1]? Но реальная проблема, вероятно: «position: ...» требует точку в Google Картах. Попробуйте это: position: new google.maps.LatLng (centroid [0], centroid [1]) –

+0

Почему вы не передаете маркер вместо этого в качестве второго параметра с помощью info_window.open (map, this) -> info_window.open (map, new new google.maps.Marker ({...}) .Установка положения маркера с помощью центроида и объекта LatLng-Object. В этом примере используется также открытый метод infowindow: https: // developers .google.com/карты/документы/JavaScript/примеры/InfoWindow простые? гектолитров = де – Blauharley

ответ

0

Я решил это путем удаления второго аргумента в открытом()

info_window.open(map) 

прекрасно работает. Я передавал «это», чтобы связать его с этим конкретным многоугольником среди многих. Я до сих пор не понимаю, почему это работает, и ни

info_window.open(map, poly) 

ни

info_window.open(map, this) 

работы

0

Это:

info_window.open(map, this); 

не будет работать на что-нибудь кроме Google. maps.Marker. Второй аргумент InfoWindow.open может быть только google.maps.Marker, Polygon или Polyline не будут работать там.

из documentation «В основной API, единственный якорь класс Marker. Тем не менее, якорь может быть любой MVCObject, который выставляет LatLng положение свойство»

Смежные вопросы