我試圖顯示地圖標記沒有用。Ionic 2:地圖標記不出現
構造:
constructor(navController, platform, app) {
this.navController = navController;
this.platform = platform;
this.app = app;
platform.ready().then(() => {
this.initializeMap();
});
}
邏輯:
initializeMap() {
Geolocation.getCurrentPosition().then((resp) => {
console.log("Lat: ", resp.coords.latitude);
console.log("Long: ", resp.coords.longitude);
});
let locationOptions = {timeout: 30000, enableHighAccuracy: true};
navigator.geolocation.getCurrentPosition(
(position) => {
let options = {
// /new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
setMyLocationEnabled: true
}
this.map = new google.maps.Map(document.getElementById("map_canvas"), options);
},
(error) => {
console.log(error);
}, locationOptions
);
var myLatLng = new google.maps.LatLng(1.290270,103.851959);
var marker = new google.maps.Marker({
position: myLatLng,
title: 'Hello World!',
});
var map = google.maps.Map(document.getElementById("map_canvas"));
marker.setMap(map);
}
一切正常,只是地圖標記沒有出現。
我試圖創建一個地圖的新實例,並將另一個地圖的z-index設置爲1,但它不會顯示太多。即使將整個標記函數放在內部函數中也不起作用。
我猜它可能與我的「var map」無法找到map_canvas。我如何在這種情況下做到這一點?
更新: 即使按照Will的建議並嘗試使用或不使用setInterval,標記也不會出現。
var myVar = setTimeout(myFunction, 5000);
function myFunction(){
var myLatLng = new google.maps.LatLng(1.290270,103.851959);
var marker = new google.maps.Marker({
position: myLatLng,
title: 'Hello World!',
});
console.log("poof");
marker.setMap(this.map);
}
更新2: 在我的CSS,我添加以下代碼行引起我的標記不出現。
div{
max-width:100%;
max-height:100%;
}
刪除它與Will的答案工程。
爲什麼你初始化地圖在'getCurrentPosition回調'功能?因爲這是異步的你的地圖在你創建你的標記後正在初始化 –
@ Will.Harris更新! – Gene
我的意思是你像這樣在回調裏初始化你的地圖......'this.map = new google.maps.Map(document.getElementById(「map_canvas」),options);'。但是你的標記代碼不在回調中,所以你的標記代碼將它設置爲'map_canvas',但是'map_canvas'尚未初始化!這有意義嗎? –