1
嗯,我有這個問題,加載地圖一次,一切工作完美。第二次或一旦更新地圖不加載好,但在導航時沒有居中加載,您可以看到已製作但已變形或完全丟失的標記。谷歌地圖中心加載失敗
我已經嘗試了幾種方法來解決這個問題,首先和最常見的我發現是使用google.maps.event.trigger(map 'resize')
,但它並沒有工作,然後邏輯,嘗試每當加載地圖執行,創建一個新的地圖,具有相同的數據並專注,但都不適合我。這也可能是我使用地圖的方式。我在我的應用程序中使用相機的插件,用戶拍攝照片,這應該檢測我在哪裏繪製圖片並顯示地圖。每次打開視圖時,攝像頭的插頭,在拍攝和顯示圖片的過程中,我都會調用相應的函數來加載地圖,這使我有點棘手,立即加載我有一個很好的時間鎖定在這個問題,我發現解決方案服務於我,但只爲瀏覽器,設備不起作用。我正在使用離子框架和插件cordova。
控制器:
.controller("CamaraCtrl", function($scope,$rootScope, Camera,$cordovaGeolocation,$state,$location,$ionicSideMenuDelegate) {
var posOptions = {timeout: 10000, enableHighAccuracy: false};
$cordovaGeolocation
.getCurrentPosition(posOptions)
.then(function (position) {
var latitud_actual = position.coords.latitude
var longitud_actual = position.coords.longitude
$scope.latitud = latitud_actual;
$scope.longitud = longitud_actual;
//$scope.map = new google.maps.Map(document.getElementById("mapa_ubicacion"), mapOptions);
}, function(err) {
// error
});
function initialize() {
var mapOptions = {
center: new google.maps.LatLng($scope.latitud, $scope.longitud),
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
};
var map = new google.maps.Map(document.getElementById("map"),
mapOptions);
$scope.setMarker(map, new google.maps.LatLng($scope.latitud, $scope.longitud), 'Yo', '');
$scope.map = map;
}
$scope.setMarker = function(map, position, title, content) {
var marker;
var markerOptions = {
position: position,
map: map,
title: title
};
marker = new google.maps.Marker(markerOptions);
google.maps.event.addListener(marker, 'click', function() {
// close window if not undefined
if (infoWindow !== void 0) {
infoWindow.close();
}
// create new window
var infoWindowOptions = {
content: content
};
infoWindow = new google.maps.InfoWindow(infoWindowOptions);
infoWindow.open(map, marker);
});
}
$scope.mostrar_form = false;
$scope.mostrar_boton_view = false;
$scope.getPhoto = function() {
Camera.getPicture().then(function(imageURI) {
console.log(imageURI);
$scope.lastPhoto = imageURI;
$scope.mostrar_form = true;
$scope.mostrar_boton_view = false;
google.maps.event.addDomListener(window, 'load', initialize);
initialize();
}, function() {
$scope.mostrar_boton_view = true;
}, {
quality: 75,
targetWidth: 320,
targetHeight: 320,
saveToPhotoAlbum: false
});
};
$scope.getPhoto();
})