首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用angular-google-maps刷新地图和标记

使用angular-google-maps刷新地图和标记
EN

Stack Overflow用户
提问于 2015-03-19 23:31:58
回答 2查看 15.9K关注 0票数 5

嗨,我正在使用我的项目的角度-谷歌-地图。html和js代码如下所示

html:

代码语言:javascript
复制
        <ui-gmap-markers models="apartments" coords="'loc'" icon="'assets/images/map_icon_normal.png'" idkey="'_id'"
                     fit="'false'" click="click">


      <ui-gmap-windows show="'show'" >
        <div ng-non-bindable>{{streetAddress}}</div>

      </ui-gmap-windows>
    </ui-gmap-markers>



  </ui-gmap-google-map>

脚本: angular.module('myApp')

代码语言:javascript
复制
.controller('MapCtrl',
                    function ($scope, $routeParams, Map, uiGmapGoogleMapApi) {
 $scope.apartments = [];
 $scope.customIcon = "../../assets/images/map_icon_normal.png"

$scope.map = {
      center: {
        latitude: $routeParams.lat,
        longitude: $routeParams.lon
      },

      zoom: 5,
      bounds: {},
      events: {
        tilesloaded: function (map) {
          //console.log('tiles loaded');
          $scope.$apply(function () {
            $scope.mapInstance = map;
            //console.log(map.getBounds().getNorthEast());
            $scope.searchbox.options.bounds = new google.maps.LatLngBounds($scope.mapInstance.getBounds().getNorthEast(),
              $scope.mapInstance.getBounds().getSouthWest());

          });
        },
        idle: function(map) {

          $scope.map.refresh = false;

        },
        resize: function(map) {
          console.log('resize');
        },
        dragend: function() {

        }
      },
      markersEvents: {
        click: function(marker, eventName, model, args) {
          console.log('markerEvent click');
          $scope.map.window.model = model;
          $scope.map.window.show = true;
        }
      },

      window :  {
        marker: {},
        show: false,
        closeClick: function() {
          this.show = false;
        },
        options: {} // define when map is ready
      },

      control: {},
      refresh: function () {
        $scope.map.control.refresh();
      }
    }

    uiGmapGoogleMapApi.then(function (map) {

      $scope.getData(20, 0, map);

      map.visualRefresh = true;
      $scope.mapInstance = map;


    })

       $scope.getData = function(limit, offset, map) {
      Map.getApartments($routeParams.lat, $routeParams.lon, limit, offset).success(function (data) {
         ///----- I get undefined error here---
              $scope.map.control.refresh();



      });

    }})
}

我不确定如何使用新标记刷新地图,甚至不确定如何触发地图更新。我尝试了ui-gmap-google-map的'control‘和'refresh’参数,但是无法让它工作。

EN

回答 2

Stack Overflow用户

发布于 2015-03-20 11:39:04

您需要使用uiGmapIsReady -而不是uiGmapGoogleMapApi --来等待control对象使用其方法(如refresh)进行扩充。

uiGmapIsReady服务提供了在所有uiGmapGoogleMap指令都已完全初始化时进行解析的承诺,而uiGmapGoogleMapApi服务仅在Google Maps JS API加载时进行解析。

有关使用uiGmapIsReady的示例,请参见this answer。当然,不要忘记the docs

关于如何更新作用域上的models属性以更新地图,您的代码示例需要进行充实和清理,以帮助您实现这一点。(例如,对于更新$scope.apartmentsgetApartments的分辨率是什么?或者,问这个问题本身就是答案?)看看this fiddle,它可能会在这段时间对你有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2015-03-20 00:50:57

尝试dorebuildall属性。

代码语言:javascript
复制
<ui-gmap-markers 
    models="apartments"
    coords="'loc'"
    icon="'assets/images/map_icon_normal.png'"
    idkey="'_id'"
    fit="'false'"
    click="click"
    dorebuildall="true">
        <ui-gmap-windows></ui-gmap-windows>
</ui-gmap-markers>

更多详情请访问:http://angular-ui.github.io/angular-google-maps/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29148743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档