AngularJs和Google Maps问题:不显示标记?

用户名

我正在尝试使用AngularJs和Google Maps API在地图上显示标记。但是,由于某种原因,我无法显示标记。我不确定是否从数据库中提取了错误的数据,但是如果有人可以帮助我,那就太好了!

.controller('MapCtrl', ['$scope', '$state', '$cordovaGeolocation', '$ionicSideMenuDelegate', '$ionicModal', 'LocationService', function($scope, $state, $cordovaGeolocation, $ionicSideMenuDelegate, $ionicModal, LocationService) {
    $scope.locations = [];

    LocationService.getLocations().then(function (result) {
      $scope.locations = result.data;
    });

    var mapOptions = {
        zoom: 4,
        center: new google.maps.LatLng(40.0000, -98.0000),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    $scope.map = new google.maps.Map(document.getElementById('map'), mapOptions);

    $scope.markers = [];

    var infoWindow = new google.maps.InfoWindow();

    var createMarker = function (info){

        var marker = new google.maps.Marker({
            map: $scope.map,
            position: new google.maps.LatLng(info.lat, info.long),
            title: info.name
        });

        marker.content = '<div class="infoWindowContent">' + info.name + '</div>';

        google.maps.event.addListener(marker, 'click', function(){
            infoWindow.setContent('<h2>' + marker.title + '</h2>' + marker.content);
            infoWindow.open($scope.map, marker);
        });

        $scope.markers.push(marker);

    }  

    for (i = 0; i < $scope.locations.length; i++){
        createMarker($scope.locations[i]);
    }

    $scope.openInfoWindow = function(e, selectedMarker){
        e.preventDefault();
        google.maps.event.trigger(selectedMarker, 'click');
    }
}])

.service('LocationService', function ($http, Backand) {
  var baseUrl = '/1/objects/';
  var objectName = 'locations/';

  function getUrl() {
    return Backand.getApiUrl() + baseUrl + objectName;
  }

  function getUrlForId(id) {
    return getUrl() + id;
  }

  getLocations = function () {
    return $http.get(getUrl());
  };

  return {
    getLocations: getLocations
  }
})

数据如何存储在数据库中

{
     "id": 1,
      "name": "Ballentine Hall",
      "lat": 39.165935,
      "long": -86.521287
}
用户名

好吧,我明白了。可以肯定的是,这不是正确/最有效的方法,但至少可以正常工作。

因此,我发现createMarker函数无法读取存储在location变量中的数据。为了解决这个问题,我只是将地图的所有代码放在从数据库中获取位置数据的函数中。这就解决了获取数据的问题。

第二个问题是,它没有从这些位置获取正确的数据。因此,在getList函数中,我将代码更改为此:$scope.locations = response.data.data;然后一切开始工作。

.controller('MapCtrl', ['$scope', '$state', '$cordovaGeolocation', '$ionicSideMenuDelegate', '$ionicModal', 'dataService', '$http', 'Backand', function($scope, $state, $cordovaGeolocation, $ionicSideMenuDelegate, $ionicModal, dataService, $http, Backand) {

  $scope.locations = [];

    dataService.getList('locations').then(function(response) {
    $scope.locations = response.data.data;

    var mapOptions = {
        zoom: 4,
        center: new google.maps.LatLng(40.0000, -98.0000),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    $scope.map = new google.maps.Map(document.getElementById('map'), mapOptions);

    $scope.markers = [];

    var infoWindow = new google.maps.InfoWindow();

    var createMarker = function (info){

        var marker = new google.maps.Marker({
            map: $scope.map,
            position: new google.maps.LatLng(info.lat, info.long),
            title: info.name
        });


        marker.content = '<div class="infoWindowContent">' + info.name + '</div>';

        google.maps.event.addListener(marker, 'click', function(){
            infoWindow.setContent('<h2>' + marker.title + '</h2>' + marker.content);
            infoWindow.open($scope.map, marker);
        });

        $scope.markers.push(marker);
    }  

 for (i = 0; i < $scope.locations.length; i++){
        createMarker($scope.locations[i]);
    }

    $scope.openInfoWindow = function(e, selectedMarker){
        e.preventDefault();
        google.maps.event.trigger(selectedMarker, 'click');
    } 
  });

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS + Google Maps不显示标记

来自分类Dev

AngularJs-Google-Maps标记未显示

来自分类Dev

Google MarkerClusterer不显示标记

来自分类Dev

ReactJS和Google Maps-显示标记

来自分类Dev

Google Maps Markers和AngularJS

来自分类Dev

如何使用angularjs和Google Maps更改图标标记

来自分类Dev

如何使用angularjs和Google Maps更改图标标记

来自分类Dev

在InfoWindow中显示Google Maps标记的纬度和经度

来自分类Dev

Google Maps API-地图不显示

来自分类Dev

Google Maps Directions服务不显示

来自分类Dev

使用Google Maps API的位置标记问题

来自分类Dev

Google Maps标记事件点击问题

来自分类Dev

Google Maps API - 弹跳标记问题 2

来自分类Dev

Google Maps标记未显示javascript

来自分类Dev

使用Google Maps API显示标记

来自分类Dev

Google Maps API-标记未显示

来自分类Dev

Android Google Maps多个标记未显示

来自分类Dev

Google Maps jQuery标记未显示

来自分类Dev

Google Maps API:未显示标记

来自分类Dev

Google Maps标记图钉未显示

来自分类Dev

Google Maps API 不再显示路线或标记

来自分类Dev

Google Maps Javascript API,标记和折线的问题不在React.js应用程序上一起显示

来自分类Dev

AngularJS中Google Maps的路线标记

来自分类Dev

使用AngularJS在Google Maps中实现标记

来自分类Dev

Android Google Maps v2不显示指南针和位置图标

来自分类Dev

带有标记的Google Maps Android API问题

来自分类Dev

带有标记的Google Maps Android API问题

来自分类Dev

Google Maps API v3标记问题

来自分类Dev

KendoTreeView和AngularJS:不显示图标