javascript - Google Places API 无法与 Ionic 应用程序中的 getCurrentPosition Geolocation 配合使用

标签 javascript angularjs ionic-framework geolocation google-places-api

尝试让 Google Places API 注意到我的位置并应用以下功能。对此非常陌生,不确定我在下面做错了什么,因为 API 和所有功能最初都可以工作,但在询问我的位置后,它显示了我在哪里,但其他任何东西都不起作用/不能一起工作。

我添加到我的 ionic 应用程序中的 Cordova 地理定位插件:

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

App.js

app.controller("MapController", function($scope, $ionicLoading) {

  var map;
  var infowindow;
  var request;
  var service;
  var markers = [];

  google.maps.event.addDomListener(window, 'load', function() {

    var center = new google.maps.LatLng(42.3625441, -71.0864435);
    var mapOptions = {
      center:center,
      zoom:16
    };

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

  navigator.geolocation.getCurrentPosition(function(pos) {
              map.setCenter(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude));
              var myLocation = new google.maps.Marker({
                  position: new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude),
                  map: map,
                  title: "My Location"
              });
          });

    $scope.map = map;

    request = {
        location: center,
        radius: 1650,
        types: ['bakery', 'bar']
    };

    infowindow = new google.maps.InfoWindow();

    var service = new google.maps.places.PlacesService(map);

    service.nearbySearch(request, callback);

  function callback (results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
    }
  }
  function createMarker(place){
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
        map: map,
        position: place.geometry.location
    });
    google.maps.event.addListener(marker, 'click', function(){
      infowindow.setContent(place.name);
      infowindow.open(map,this);
    });
  }

});

});

最佳答案

获得位置后,您可以更新 map 位置,但不会运行新的附近搜索。

所以我认为您想在 getCurrentPosition 回调中调用 service.nearbySearch(...)

您可能还想让您的nearearSearch回调保留通过createMarker创建的标记数组,以便您可以在运行新搜索时删除它们(例如通过调用marker.setMap (null) 在每个旧标记上)。

关于javascript - Google Places API 无法与 Ionic 应用程序中的 getCurrentPosition Geolocation 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36559462/

相关文章:

javascript - 如果 AngularJS 中的 Api 服务状态 == 404,则记录消息

node.js - 在 Protractor 测试期间使用 $rootScope

javascript - angularjs ng-显示 : Hide Sign-in option after successful login

angular - 将图像 src 的授权 header 传递到 Ionic 页面中的远程服务器

php - JavaScript 菜单在 Chrome 中行为异常

javascript - Nextjs - 在服务器端访问 url 参数

javascript - 使用折叠式和选项卡

javascript - 错误 : AttributeError: 'coroutine' object has no attribute 'newPage' when doing youtube webscraping

android - 使用 Cordova 在 Android 上打开 powerpoint 和 word 文档

angularjs - 无法识别的文档结构 : {"style" :"subheader" ,"alignment" :"right" ,"_margin":[0, 20,0,5]}