iOS中使用nativescript-google-maps-sdk的地图中心错误

时间:2019-01-16 13:50:13

标签: nativescript angular2-nativescript nativescript-angular nativescript-telerik-ui nativescript-plugin

在iOS中,当我放置marker和mapView位置时,地图不会居中显示,但是如果我将手机移至横向并再次旋转至纵向,则地图中心将显示正常。 在Adnroid中效果很好。

您可以在此github问题中获得更多信息: https://github.com/dapriett/nativescript-google-maps-sdk/issues/322

1 个答案:

答案 0 :(得分:2)

我亲自面对过这个问题,发现它基本上是iOS上的布局问题。提供给MapView的XML元素的heightwidth属性值在iOS上有所不同。如问题本身所述,解决问题的方法是在运行时映射resizing(因为旋转屏幕使其经过调整大小例程)。在地图渲染的开头应用这种荒谬的逻辑即可解决问题。

这就是我的做法:

以XML提供MapView的width值:

<maps:mapView width="100%" mapReady="onMapReady" />

并在height方法内设置地图的onMapReady,延迟为100毫秒。

/* if you want to set height in DIP */

setTimeout(() => this.mapView.height = 500, 100);

或者如果您想以百分比设置高度

/* [0.85 means 85% here] */

setTimeout(() => this.mapView.height = {
    unit: '%',
    value: 0.85
}, 100);

100毫秒的延迟使其通过resize效果。在iOS 12.1上测试