javascript - 谷歌地图和 Angular js : TypeError: Cannot read property 'trigger' of undefined

标签 javascript angularjs google-maps

我正在尝试让 Angular 与谷歌地图一起使用。似乎无法让它工作!我得到的只是灰屏。

我获取每个经销商的所有 LatLng 并从模板传递给 Controller ​​。 当用户点击相关链接时,它应该在 map 上显示经销商。

我正在使用谷歌示例,但我收到 TypeError: Cannot read property 'trigger' of undefined.

HTML:

<p><a data-location="{dLat:{{dealer.lat}}, dLng:{{dealer.lng}}, dCode:{{dealer.dealerCode}}}" ng-click="dealerMapInfo(dealer.lat, dealer.lng, dealer.dealerCode, $event)" href="#">Details</a></p>

map 服务:

(function(){
'use strict';

angular
    .module('osbApp.core')
    .factory('mapService', MapService);


function MapService() {

    var api = {};

    var config = {
            language : "en-GB", 
            countryCode : "GB", 
            imagePath : "http://www.test.co.uk/dl/mapmarkers/", 
            countryBounds : [{lng : 2.69, lat : 60.85}, {lng : -9.23, lat : 60.85},{lng : -9.23, lat : 49.84},{lng : 2.69, lat : 49.84}] 
    };

    var mapAPI = new googleMapsApi(config),
        map = new mapAPI.map(document.getElementById('myMap'), {
        center : {
            lat : 54.501911,
            lng : -4.100353
        },
        zoom : 5
    });


    api.map = map;

    return api;
}

})();

Controller (onclick):

$scope.dealerMapInfo = function(latitude, longitude, dealerCode, $event) {

        if ($event) {
            $event.preventDefault();
        }

        var dealerLatLng = {
            lat: latitude,
            lng: longitude
        };

        $scope.test = dealerLatLng;



        $scope.$watch('test', function () {

            $timeout(function(){

                console.log(dealerLatLng);

                mapService.map.event.trigger(mapService.map, 'resize');
                mapService.map.setCenter(dealerLatLng);
                mapService.map.setZoom(15);
                mapService.map.addMarker(dealerLatLng);


            },100);

        });


    };

最佳答案

在您的代码中更改此行 mapService.map.event.trigger(mapService.map, 'resize');与下面的行。

google.map.event.trigger(mapService.map, 'resize');

关于javascript - 谷歌地图和 Angular js : TypeError: Cannot read property 'trigger' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019168/

相关文章:

javascript - 在 JQuery 中使用 JSON 填充 SELECT

javascript - 如何在 Angular js中设置子行的索引值

jquery - Google Maps API KML 图层更改每个图层的颜色

android - 在 Android V2 中移动 map

android - 将值(value)传递给Web服务时应用崩溃

javascript - 我解决了与 IE9 相关的正则表达式问题,但我不确定它如何或为何工作

javascript - NestJS 如何使用 async/await 配置中间件?

c# - 将 C# 日期时间转换为 Angular 日期

javascript - 消除 $watch 的替代方法

javascript - Angular 2+ Router是否卸载之前懒加载的模块