谷歌地图fitBounds无法正常工作

简蒂

我正在使用带有angularjs指令的谷歌地图创建旅行视图。除了可以将谷歌地图拟合到经度集合外,其他所有方法都可以正常工作。我一直尝试使用fitbounds方法,但是失败了。

谢谢,

以下是我的代码工作。

指示:

 <div class="trip-google-map" trip-map="" mapid="2" latitude="22.998673" longitude="72.514346"></div>

指令代码:

app.directive('tripMap', function ($compile) {
    return {
        controller: function ($scope, $location, mapService) {
            this.registerMap = function (myMap) {
                mapService.setTripMap(myMap);

            };
        },
        link: function (scope, elem, attrs, ctrl) {


            var mapOptions,
                latitude,
                longitude,
                mapStyles,
                map;
            latitude = attrs.latitude;
            longitude = attrs.longitude;
            mapStyles =
                [
                    {
                        "featureType": "water",
                        "elementType": "geometry",
                        "stylers": [
                            {
                                "color": "#a2daf2"
                            }
                        ]
                    },
                    {
                        "featureType": "landscape.man_made",
                        "elementType": "geometry",
                        "stylers": [
                            {
                                "color": "#f7f1df"
                            }
                        ]
                    },
                    {
                        "featureType": "landscape.natural",
                        "elementType": "geometry",
                        "stylers": [
                            {
                                "color": "#d0e3b4"
                            }
                        ]
                    },
                    {
                        "featureType": "landscape.natural.terrain",
                        "elementType": "geometry",
                        "stylers": [
                            {
                                "visibility": "on"
                            }
                        ]
                    },
                    {
                        "featureType": "poi.park",
                        "elementType": "geometry",
                        "stylers": [
                            {
                                "color": "#bde6ab"
                            }
                        ]
                    },
                    {
                        "featureType": "poi",
                        "elementType": "labels",
                        "stylers": [
                            {
                                "visibility": "on"
                            }
                        ]
                    },
                    {
                        "featureType": "poi.medical",
                        "elementType": "geometry",
                        "stylers": [
                            {
                                "color": "#fbd3da"
                            }
                        ]
                    },
                    {
                        "featureType": "poi.business",
                        "elementType": "all",
                        "stylers": [
                            {
                                "visibility": "on"
                            }
                        ]
                    },
                    {
                        "featureType": "road",
                        "elementType": "geometry.stroke",
                        "stylers": [
                            {
                                "visibility": "on"
                            }
                        ]
                    },
                    {
                        "featureType": "road",
                        "elementType": "labels",
                        "stylers": [
                            {
                                "visibility": "on"
                            }
                        ]
                    },
                    {
                        "featureType": "road.highway",
                        "elementType": "geometry.fill",
                        "stylers": [
                            {
                                "color": "#ffe15f"
                            }
                        ]
                    },
                    {
                        "featureType": "road.highway",
                        "elementType": "geometry.stroke",
                        "stylers": [
                            {
                                "color": "#efd151"
                            }
                        ]
                    },
                    {
                        "featureType": "road.arterial",
                        "elementType": "geometry.fill",
                        "stylers": [
                            {
                                "color": "#ffffff"
                            }
                        ]
                    },
                    {
                        "featureType": "road.local",
                        "elementType": "geometry.fill",
                        "stylers": [
                            {
                                "color": "black"
                            }
                        ]
                    },
                    {
                        "featureType": "transit.station.airport",
                        "elementType": "geometry.fill",
                        "stylers": [
                            {
                                "color": "#cfb2db"
                            }
                        ]
                    }
                ];



            mapOptions = {
                zoom: 12,
                disableDefaultUI: true,

                center: new google.maps.LatLng(latitude, longitude),

                mapTypeId: google.maps.MapTypeId.ROADMAP,
                styles: mapStyles,
                mapTypeControl: true,

                mapTypeControlOptions: {
                    style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
                    position: google.maps.ControlPosition.BOTTOM_CENTER
                },
                panControl: true,
                panControlOptions: {
                    position: google.maps.ControlPosition.LEFT_CENTER
                },
                zoomControl: true,
                zoomControlOptions: {
                    style: google.maps.ZoomControlStyle.LARGE,
                    position: google.maps.ControlPosition.LEFT_CENTER
                },
                scaleControl: true,
                streetViewControl: true,
                streetViewControlOptions: {
                    position: google.maps.ControlPosition.LEFT_CENTER
                },
            };
            /*
                        var mapOptions = {
                            mapTypeId: google.maps.MapTypeId.ROADMAP,
                            mapTypeControl: false
                        };
                        */
            //google.maps.visualRefresh = true;
            var map = new google.maps.Map(elem[0], mapOptions);
            ctrl.registerMap(map);
            scope.InitializeTripdetailController();

            scope.$apply(function () {
                window.setTimeout(function () {
                    google.maps.event.trigger(map, 'resize');
                }, 100);
            });
        }

    };
});

控制器代码:

app.controller('tripdetailController', ['$scope', '$rootScope', '$timeout', 'mapService', 'ngDialog', function ($scope, $rootScope, $timeout, mapService, ngDialog) {
        $scope.tripPathPolylines = [];
        var trips = [];
        var insertTripLatlng = function (trip) {
            var isExists = false;
            for (var v in trips) {
                if (trips[v].hash == trip.hash) {
                    isExists = true
                    break;
                }
            }
            if (isExists == false) {
                trips.push(trip);
            }
        }
        function settrip() {
            var marker;
            var tripmap = mapService.getTripMap();
            var bounds = new google.maps.LatLngBounds();
            for (var j = 0; j < trips.length; j++) {
                var ltlng = new google.maps.LatLng(trips[j].lat, trips[j].lng);
                bounds.extend(ltlng);

                marker = new google.maps.Marker({
                    position: ltlng,
                    map: tripmap
                });

            }
            tripmap.fitBounds(bounds);
        }
        $scope.InitializeTripdetailController = function () {
            var tripData = $scope.$parent.ngDialogData;
            for (var p = 0; p < tripData.messages.length; p++) {
                insertTripLatlng({ lat: tripData.messages[p].trackPoint.pos.lat, lng: tripData.messages[p].trackPoint.pos.lng, hash: tripData.messages[p].trackPoint.pos.lat + "-" + tripData.messages[p].trackPoint.pos.lng })
            }
            settrip();
        }
    }]);

FitBounds代码:

 var tripmap = mapService.getTripMap();
 var bounds = new google.maps.LatLngBounds();
 for (var j = 0; j < trips.length; j++) {
     var ltlng = new google.maps.LatLng(trips[j].lat, trips[j].lng);
     bounds.extend(ltlng);
     marker = new google.maps.Marker({position: ltlng,map: tripmap});
  }
  tripmap.fitBounds(bounds);

该地图如下所示

看起来与当前代码相同

应该在fitbounds之后为:

在此处输入图片说明

更新:css for map

更新:映射被加载到ngDialog弹出窗口中。

 .trip-google-map {
     width: 100%;
     height: 450px;
  }
简蒂

这是由于地图被ngDialog popup指令调整了大小。

通过地图调整大小回调中的调用fitbounds解决,使用as

           $scope.$apply(function () {
                window.setTimeout(function () {
                google.maps.event.trigger(tripmap, 'resize');
                    tripmap.fitBounds(bounds);
                }, 100);
            });

谢谢大家的帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

谷歌地图fitBounds无法正常工作

来自分类Dev

谷歌地图map.fitBounds()和bounds.extend()无法正常工作。

来自分类Dev

谷歌地图addListener无法正常工作

来自分类Dev

谷歌地图点击事件无法正常工作

来自分类Dev

谷歌地图方向,为什么我的代码无法正常工作

来自分类Dev

fitBounds(bound)函数无法正常工作

来自分类Dev

谷歌地图信息窗口按钮单击jQuery无法正常工作

来自分类Dev

离子框架谷歌地图iPhone和Android模拟器无法正常工作

来自分类Dev

谷歌地图的Java脚本无法正常工作的第二次点击

来自分类Dev

离子框架谷歌地图iPhone和Android模拟器无法正常工作

来自分类Dev

html2canvas 在拍摄包含 gmap(谷歌地图)的 div 时无法正常工作

来自分类Dev

谷歌地图-使用map.fitBounds(bounds);

来自分类Dev

While循环无法正常工作。谷歌脚本

来自分类Dev

谷歌浏览器无法正常工作

来自分类Dev

谷歌地图无法正常运行IE11

来自分类Dev

此处地图上的addDataPoints无法正常工作

来自分类Dev

迅捷的Google地图代表无法正常工作

来自分类Dev

Android Google地图无法正常工作

来自分类Dev

Android地图缩放无法正常工作

来自分类Dev

Android Google地图无法正常工作

来自分类Dev

此处地图上的addDataPoints无法正常工作

来自分类Dev

谷歌地图 .fitBounds() 和自定义 offsetCenter?

来自分类Dev

酒井谷歌分析-实时无法正常工作

来自分类Dev

WordPress(Avada主题)谷歌字体拉丁扩展无法正常工作

来自分类Dev

谷歌API自动完成功能无法正常工作

来自分类Dev

谷歌地图 API 不工作

来自分类Dev

谷歌地图 - computeDistanceBetween 不工作

来自分类Dev

谷歌地图停止工作

来自分类Dev

Ng-map(角度地图)现在无法正常工作

Related 相关文章

  1. 1

    谷歌地图fitBounds无法正常工作

  2. 2

    谷歌地图map.fitBounds()和bounds.extend()无法正常工作。

  3. 3

    谷歌地图addListener无法正常工作

  4. 4

    谷歌地图点击事件无法正常工作

  5. 5

    谷歌地图方向,为什么我的代码无法正常工作

  6. 6

    fitBounds(bound)函数无法正常工作

  7. 7

    谷歌地图信息窗口按钮单击jQuery无法正常工作

  8. 8

    离子框架谷歌地图iPhone和Android模拟器无法正常工作

  9. 9

    谷歌地图的Java脚本无法正常工作的第二次点击

  10. 10

    离子框架谷歌地图iPhone和Android模拟器无法正常工作

  11. 11

    html2canvas 在拍摄包含 gmap(谷歌地图)的 div 时无法正常工作

  12. 12

    谷歌地图-使用map.fitBounds(bounds);

  13. 13

    While循环无法正常工作。谷歌脚本

  14. 14

    谷歌浏览器无法正常工作

  15. 15

    谷歌地图无法正常运行IE11

  16. 16

    此处地图上的addDataPoints无法正常工作

  17. 17

    迅捷的Google地图代表无法正常工作

  18. 18

    Android Google地图无法正常工作

  19. 19

    Android地图缩放无法正常工作

  20. 20

    Android Google地图无法正常工作

  21. 21

    此处地图上的addDataPoints无法正常工作

  22. 22

    谷歌地图 .fitBounds() 和自定义 offsetCenter?

  23. 23

    酒井谷歌分析-实时无法正常工作

  24. 24

    WordPress(Avada主题)谷歌字体拉丁扩展无法正常工作

  25. 25

    谷歌API自动完成功能无法正常工作

  26. 26

    谷歌地图 API 不工作

  27. 27

    谷歌地图 - computeDistanceBetween 不工作

  28. 28

    谷歌地图停止工作

  29. 29

    Ng-map(角度地图)现在无法正常工作

热门标签

归档