尝试让 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/