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

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

在 iOS 中,当我放置标记和 mapView 位置时, map 不会居中显示,但如果我将手机移动到横向并再次旋转到纵向, map 中心显示正常。 在 Android 中运行良好。

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

最佳答案

我亲自面对过这个问题,发现它基本上是 iOS 上的布局问题。 iOS 对提供给 MapView 的 XML 元素的 heightwidth 属性值的处理有些不同。正如问题本身所述,我们问题的解决方案是在运行时调整 map 大小(因为旋转屏幕会使其通过调整大小的例程)。在 map 渲染的开始应用这种荒谬的逻辑,解决了这个问题。

我是这样做的:

在 XML 中提供 MapView 的 width 值:

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

并在onMapReady方法中设置 map 的高度,延迟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 上测试

关于nativescript - iOS 中使用 nativescript-google-maps-sdk 的 map 中心错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54218519/

相关文章:

NativeScript Angular ListPicker 的行为类似于 `<select>`

angular - NativeScript-Angular - KeyboardEvent 未定义

javascript - while 循环 promise 、链式 promise

angular - 带有标签/路由器 socket 的子路由不起作用。 "Error: Cannot match any routes. URL Segment"

android - 在 nativescript 中更改 AndroidManifest.xml 和 styles.xml 后,ActionBar 和标题不会消失

ios - CardIO 的 Nativescript 插件 (IOS) - 无法调用 CARDIO 库中的任何函数且未公开

transition - 在 Nativescript 的屏幕之间制作动画

android - Nativescript 自定义组件

android - 如何在 NativeScript 中更改应用程序名称

android - 无法在 NativeScript 6 Angular 中获得透明的 WebView(设置 backgroundColor 透明 & layertype 软件)