2015-02-06 50 views
1

我試圖在標記上顯示infowindow,而且我正在努力。在on-click處理程序中獲取標記: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不似乎工作,以及標記(評論在報告的代碼)

無法讀取未定義的屬性「目標」

使用標記時,它是未定義的。 我該如何設法解決這個問題?

回答

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

謝謝,我添加了兩個信息窗口標籤對,如您在發佈的第一個鏈接的最後一篇文章中所報告的那樣。現在我正在看信息窗口! – Manu 2015-02-06 13:54:39

+0

第二個鏈接不工作。請更新鏈接 – 2016-06-26 10:53:53

0

您應該將標記實例作爲第二個參數傳遞給open調用。

看到這裏https://developers.google.com/maps/documentation/javascript/examples/infowindow-simple

+0

是的,我該如何傳遞它?我正在嘗試使用event.target,但它不起作用。我也試過把這個作爲參數傳遞,但同樣的錯誤。我怎樣才能從HTML點擊屬性傳遞它? – Manu 2015-02-06 12:00:45

+0

我也試過通過標記(更新我的發佈代碼),但仍然是同樣的問題。 – Manu 2015-02-06 13:26:57

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 2015-02-06 12:01:58

+0

我沒有onclick,只是點擊(特定標記) – Manu 2015-02-06 12:07:02

+0

好的,所以你說你無法通過事件作爲參數。 – Michelangelo 2015-02-06 12:13:32