google-maps - ionic2 和谷歌地图弄乱了后退按钮弹出
问题描述
我有一个页面将在 ionic2 中显示谷歌地图,其中包含我通过页面的 latlong,它并不总是相同的 latlong。
问题是当我点击此页面时,它加载正常,然后我单击工具栏中的后退按钮,它会正常返回,如果我再次进入地图屏幕,它会加载没有问题,再次单击没有问题,但是如果我从该父视图执行另一个后退按钮操作以转到主屏幕,所有发生的事情都是短暂闪烁主屏幕,然后在视图中加载原始屏幕,没有加载任何内容或按钮。
一旦我禁用我的新 google.maps.Map 代码,一切都会运行良好。
我的代码:
//below all the imports
declare var google;
//at the top of the class
longitude: any;
latitude: any;
@ViewChild('map') mapElement: ElementRef;
//in the constructor
this.longitude = navParams.get('longitude');
this.latitude = navParams.get('latitude');
//call map load on page load
ionViewDidLoad() {
setTimeout(() => {
this.loadMap();
},100);
}
loadMap() {
let latLng = new google.maps.LatLng(this.latitude, this.longitude);
let mapEle = this.mapElement.nativeElement;
let mapOptions = {
center: latLng,
zoom: 15
}
//this.map
let map = new google.maps.Map(mapEle, mapOptions);
let marker = new google.maps.Marker({
map: map,
position: map.getCenter()
});
google.maps.event.addListenerOnce(map, 'idle', () => {
mapEle.classList.add('show-map');
});
}
总而言之:
- 查看 A - 推送查看 B
- 视图 B(位置列表) - 使用 lat 和 long 参数推送到视图 C
- 视图 C(显示经纬度的谷歌地图)- 弹回视图 B
- 视图B可以再次推送视图C没问题
- 视图C可以弹回视图B没问题
- 视图 B 弹回视图 A - 呈现一个空白视图 B,并且后退按钮不再可见。
我有一种感觉,由于某种原因,当我从 C 弹回视图 B 时,它会清除视图堆栈,这意味着视图 B 到 A 有问题,它只会呈现一个空白视图 B....一旦我禁用创建一个新的 google.maps.Map 的逻辑一切都按预期工作,我可以毫无问题地弹回视图 A。
编辑:经过进一步调查,似乎视图 A 确实加载了,构造函数被调用等,但几乎立即视图 B 呈现并且它的构造函数被调用....几乎就像弹回视图 A 导致单击调用视图 B 的按钮最初从观点A再次开火?或者再次执行的意图......
我已经睡了两个晚上试图弄清楚这一点,当我在视图 C 上禁用谷歌地图时,一切都很好。
解决方案
我将 loadMap() 函数更改为以下内容:
loadMap() {
let latLng = new google.maps.LatLng(this.latitude, this.longitude);
let mapOptions = {
center: latLng,
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);
let marker = new google.maps.Marker({
map: this.map,
animation: google.maps.Animation.DROP,
position: this.map.getCenter()
});
}
我也移动了 this.loadMap(); 来自 IonViewDidLoad() 函数,而是将其放在 ionViewDidEnter() 函数中。
不确定您使用的是什么谷歌地图库,但我没有使用任何离子库,而是使用以下命令将谷歌地图 API 导入 index.html 页面:
<script src="https://maps.google.com/maps/api/js?key=[YOUR KEY]"></script>
推荐阅读
- python - 如何使用 conda 查看已在开发人员模式下安装的所有软件包?
- python - python中的应用函数LabelEncoder().fit_transform
- php - 有人可以解释通过 smsgateway.me api 发送短信时的错误吗?
- assembly - 在汇编中有效地存储数据并使用它进行计算
- python - 将 python 对象属性导入当前范围
- r - R tm 包选择大量单词以保留在文本语料库中
- python - 用'0'替换熊猫不同列中的重复值
- python - non_uniform 列表的递归和
- excel - 如何遍历除 TOC 之外的工作表
- angular - Angular 9 无法实例化循环依赖!应用程序参考