2015-02-06 5 views
1

Я пытаюсь показать инфоиндустрию поверх маркера, и я борюсь с ним.Получение маркера в обработчике щелчка: AngularJS + Google Maps

В настоящее время я следующий HTML:

<map data-ng-model="mymap" zoom="4" center="[38.50, -95.00]"> 
    <marker ng-repeat="item in list" 
    position="[{{item.coordinates}}]" title="{{item.name}}" 
    icon="./images/i.png" 
    on-click="onMarkerClicked(mymap, this)" />    

    <control name="overviewMap" opened="true" /> 
</map>` 

Тогда, в соответствующем контроллере, у меня есть:

$scope.onMarkerClicked = function(mymap, marker, event){ 

    infowindow = new google.maps.InfoWindow("Hi I am the MARKER" + event.target.title); 
    infowindow.open(mymap, event.target); 
    //infowindow.open(mymap, marker); 
    $scope.$apply(); 
} 

Однако MyMap это имеет правильное значение, в то время как event.target не (как указано в приведенном коде)

Невозможно прочитать свойство 'target' of undefined

При использовании маркера он не определен. Как я могу это исправить?

ответ

1

Я наткнулся на эту GitHub, где они обсуждают этот вопрос - https://github.com/allenhwkim/angularjs-google-maps/issues/95

Затем они идут на делить пример использования ng-repeat с infoWindow - https://rawgit.com/allenhwkim/angularjs-google-maps/master/testapp/infowindow_compiled.html

Посмотрите на исходный код этого p возраст, я думаю, это поможет вам

+0

Спасибо, я добавил две пары тэгов info-window, как сообщалось в последнем сообщении первой ссылки, которую вы опубликовали. Теперь я вижу инфо-окна! – Manu

+0

Вторая ссылка не работает. Обновите ссылку –

0

Фактически вы должны передавать экземпляр маркера в качестве второго параметра для открытого вызова.

Смотрите здесь https://developers.google.com/maps/documentation/javascript/examples/infowindow-simple

+0

Да, как его передать? Я пытаюсь использовать event.target, но он не работает. Я также попытался передать это как параметр, но ту же ошибку. Как я могу передать его из атрибута HTML по клику? – Manu

+0

Я также попытался передать маркер (обновленный мой опубликованный код), но все тот же вопрос. – Manu

0

Вы отправляете объект this в качестве аргумента и назвав это событие позже? Кроме того, если вы используете Angular, почему бы не сделать это с ng-click="onMarkerClicked(myMap, this, event)". Я никогда не использовал Карты Google таким образом, но мне кажется, что ваши параметры как-то неверны.

Смотрите эту простую скрипку, чтобы увидеть, что я имею в виду

http://jsfiddle.net/ozbafyhh/

<button onclick="myFunction(this, event)">Click me</button> 

function myFunction (x, event){ 
    alert(x); 
    alert(event); 
} 
+0

ng-click не распознается, я получаю ошибку компиляции. Я попытался передать это как параметр, и он становится неопределенным. – Manu

+0

У меня нет onclick, просто на клик (конкретный маркер) – Manu

+0

Итак, вы говорите, что вы не можете передать событие в качестве аргумента. – Michelangelo

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