2015-02-06 65 views
0

我測試了角JS谷歌地圖http://angular-ui.github.io/angular-google-maps/#!/api角JS谷歌地圖無法使用谷歌事件偵聽標誌​​

我可以在地圖上添加多個標記,但我不能給事件監聽器設置爲每個標記。我只是想讓它在用戶點擊任何標記時寫入控制檯。

如何讓我的代碼工作?

下面是我的代碼:

<!DOCTYPE html> 
    <html xmlns:ng="http://angularjs.org/" ng-app="appMaps"> 

    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="//maps.googleapis.com/maps/api/js?libraries=weather,geometry,visualization,places&sensor=false&language=en&v=3.17"></script> 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.2.26/angular.js" data-semver="1.2.26"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script> 
    <script src="http://rawgit.com/angular-ui/angular-google-maps/master/dist/angular-google-maps.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
    <!--css--> 
    <style type="text/css"> 
     html, body, #map_canvas { 
      height: 100%; 
      width: 100%; 
      margin: 0px; 
     } 

     #map_canvas { 
      position: relative; 
     } 

     .angular-google-map-container { 
      position: absolute; 
      top: 0; 
      bottom: 0; 
      right: 0; 
      left: 0; 
     } 
    </style> 
    <script>angular.module('appMaps', ['uiGmapgoogle-maps']) 
     .controller('mainCtrl', function($scope) { 
    $scope.map = { 
     center: { 
     latitude: 34.963916, 
     longitude: 104.311893 
     }, 
     zoom: 4, 
     bounds: {}, 

    }; 

    $scope.options = { 
     scrollwheel: false 
    }; 
    var createRandomMarker = function(i, bounds, idKey) { 
     var lat_min = bounds.southwest.latitude, 
     lat_range = bounds.northeast.latitude - lat_min, 
     lng_min = bounds.southwest.longitude, 
     lng_range = bounds.northeast.longitude - lng_min; 

     if (idKey == null) { 
     idKey = "id"; 
     } 

     var latitude = lat_min + (Math.random() * lat_range); 
     var longitude = lng_min + (Math.random() * lng_range); 
     var ret = { 
     latitude: latitude, 
     longitude: longitude, 
     title: 'm' + i 
     }; 
     ret[idKey] = i; 
     return ret; 
    }; 
    $scope.randomMarkers = []; 
    // Get the bounds from the map once it's loaded 
    $scope.$watch(function() { 
     return $scope.map.bounds; 
    }, function(nv, ov) { 
     // Only need to regenerate once 
     if (!ov.southwest && nv.southwest) { 
     var markers = []; 
     for (var i = 0; i < 2; i++) { 
      var ret = { 
      latitude: 34.963916, 
      longitude: 104.311893, 
      title: 'm3', 
      id: 1 
      }; 

      var ret2 = { 
      latitude: 37.096002, 
      longitude: 126.987675, 
      title: 'm2', 
      id:2 
      }; 
      markers.push(ret); 
      markers.push(ret2); 

     } 
     $scope.randomMarkers = markers; 
     } 
    }, true); 

    $scope.marker = { 
     events:{click: console.log('click')}, 
    } 

    }); 


    </script> 
</head> 

<body> 
    <div id="map_canvas" ng-controller="mainCtrl"> 
    <ui-gmap-google-map center="map.center" zoom="map.zoom" draggable="true" options="options" bounds="map.bounds" events = "'map.events'"> 
     <ui-gmap-markers models="randomMarkers" coords="'self'" icon="'icon'" click="'test'" events = "'events'"></ui-gmap-markers> 
    </ui-gmap-google-map> 

</div> 
<!--example--> 
</body> 

</html> 

回答

0

我將進一步研究這個今天晚些時候。目前我可以考慮的一種方法是將中的click參數設置爲有效的JS函數,該函數調用console.log()

在我的情況,我做了click="onClick",然後定義了以下功能:

$scope.onClick = function onClick() { 
console.log("click");} 
0

點擊谷歌地圖事件

我不是知道在角地圖API,但我有一些建議
你可以使用地圖api與畫布,你可以給畫布元素上的ng點擊事件
代碼在這裏
site:
jsfiddle.net/xSPAA/536/