如何在离子谷歌地图中长按或保持时获取坐标值

时间:2016-08-09 10:14:24

标签: angularjs google-maps ionic-framework gesture

我正试图通过Google地图点击或保留离子事件来获取坐标。

持有我在浏览器控制台中获取的值没有进入设备。

如何清除此问题?我需要使用离子框架[google maps]在移动应用程序中持有/录制时获取值。

任何帮助都将不胜感激。谢谢。

.controller('HomeCtrl', function ($scope, $rootScope, $cordovaGeolocation, $ionicLoading, $ionicGesture) {

        $ionicLoading.show({
            template: '<ion-spinner icon="bubbles"></ion-spinner><br/>Acquiring location!'
        });

        var posOptions = {
            enableHighAccuracy: true,
            timeout: 20000,
            maximumAge: 0
        };
        $cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
            var lat = position.coords.latitude;
            var long = position.coords.longitude;
            $rootScope.currentlat = lat;
            $rootScope.currentlong = long;
            var myLatlng = new google.maps.LatLng(lat, long);
            $rootScope.myLatlng = myLatlng;
            var mapOptions = {
                center: myLatlng,
                zoom: 10,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };

            var map = new google.maps.Map(document.getElementById("map"), mapOptions);

            $scope.map = map;
            marker = new google.maps.Marker({
                position: myLatlng,
                map: $scope.map
            });

            var element = angular.element(document.querySelector('#map'));
            $ionicGesture.on('hold', function(e){
                $scope.$apply(function() {
                    alert('hold happens');
                   google.maps.event.clearListeners(map, 'click');
                   google.maps.event.addListener(map, 'click', function(event) {
                      alert(event.latLng);
                   });
                });
            }, element);

           google.maps.event.addListener(marker, "click", function (event) {
            });

            $ionicLoading.hide();
        }, function (err) {
            $ionicLoading.hide();
            console.log(err);
        });

    }

1 个答案:

答案 0 :(得分:2)

我认为你的问题是你的使用

$ionicGesture.on('hold')

Iconic使用Cordova和Cordova谷歌地图有自己的事件处理程序,因为“地图”在本机视图中与JavaScript无关。您可以更详细地阅读here

一旦你的设备准备就绪

  var map       = new google.maps.Map(document.getElementById("map"), mapOptions),
      longClick = plugin.google.maps.event.MAP_LONG_CLICK;

  map.on(longClick, function (latLng) {

    var selectedLatLocation = latLng.lat.toString();
    var selectedLongLocation = latLng.lng.toString();

    alert(selectedLatLocation, selectedLongLocation);


  });