【问题标题】:Google map marker click event using angular使用角度的谷歌地图标记点击事件
【发布时间】:2017-06-23 14:36:05
【问题描述】:

我想使用 angular js google map api 创建一个点击事件。

点击标记我想在不打开信息窗口的情况下调用一个函数。

我该怎么做?

$scope.map = new google.maps.Map(document.getElementById('map'), {
                        zoom: 12,
                        center: { lat: parseFloat(Center_lat) , lng: parseFloat(center_lang) }
                    });

                    $scope.infowindow = new google.maps.InfoWindow({
                        // content: ''
                    });

                    angular.forEach($scope.panoramas, function(value, index) {
                        var latLang = $scope.panoramas[index].project_latLng ;
                        // console.log(latLang)
                        var LatLngArr = latLang.split(",");
                        var lat  = LatLngArr[0];
                        var lang = LatLngArr[1];
                        console.log("lat " ,lat);

                        var marker = new google.maps.Marker({
                            position: new google.maps.LatLng(parseFloat(lat), parseFloat(lang)),
                            map: $scope.map,
                            icon:"images/map-circle.png",
                            draggable:true,
                            label: {
                                color: 'black',
                                fontWeight: 'bold',
                                text: $scope.panoramas[index].panoId,
                            },

                            title: $scope.panoramas[index].panoId
                        });

                        var content = '<a ng-click="ShowCenterPano(' + index + ')" class="btn btn-default">View details</a>';

                        var compiledContent = $compile(content)($scope)

                        google.maps.event.addListener(marker, 'click', (function(marker, content, scope) {
                            return function() {
                                scope.infowindow.setContent(content);
                                scope.infowindow.open(scope.map, marker);
                            };
                        })(marker, compiledContent[0], $scope));


                        $scope.ShowCenterPano = function(index) {
                          // alert(JSON.stringify($scope.panoramas[index]));
                        }

此处信息窗口正在打开。如何删除信息窗口并直接调用 ShowCenterPano() 函数。

【问题讨论】:

    标签: google-maps google-maps-api-3


    【解决方案1】:

    单击标记时您希望发生的一切都在侦听器内部。 我认为您正在使您的代码变得不必要地复杂。只需在标记 marker.addListener('click', function() {}); 上放置一个侦听器,然后在此函数中运行 ShowCenterPano()

    信息窗口打开的原因是因为你要求它用这行代码打开scope.infowindow.open(scope.map, marker);

    【讨论】:

    • 它给了我这个错误 Uncaught ReferenceError: ShowCenterPano is not defined
    • 你在调用 $scope.ShowCenterPano(index) 吗?您的索引也应该是函数可用的变量。
    • 还有一个提示,约定是函数名以小写字母开头,所以应该是showCenterPano
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2011-09-01
    • 2017-04-27
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多