当前位置: 首页 > 知识库问答 >
问题:

{N}6破坏iOS上的谷歌地图信息窗口

宇文勇
2023-03-14

升级到NativeScript6后,在iOS上点击谷歌地图上的标记以显示相关信息窗口,应用程序就会崩溃。这是由于_layoutrootview被删除-请参见https://github.com/dapriett/nativescript-google-maps-sdk/issues/354

问题是没有提供任何替代方案,google-maps-sdk插件最近也没有任何活动。

JavaScript error:
file:///node_modules/nativescript-google-maps-sdk/map-view.js:164:30: JS ERROR TypeError: __webpack_require__("../node_modules/tns-core-modules/ui/utils.js").ios._layoutRootView is not a function. (In '__webpack_require__("../node_modules/tns-core-modules/ui/utils.js").ios._layoutRootView(content, CGRectMake(0, 0, width, height))', '__webpack_require__("../node_modules/tns-core-modules/ui/utils.js").ios._layoutRootView' is undefined)

按照@manoj的指示,我从使用{N}5.3的另一个项目中手动复制了tns-core-modules/ui/utils.d.ts和tns-core-modules/ui/utils.ios.js中_layoutrootview的代码。iOs上的信息窗口现在可以工作了!!

我完全明白在节点模块中编辑代码是个坏主意,但我永远无法使用Manoj的方法解决webpack错误。是否有更好的方法从我自己的javascript项目中向NativeScript模块添加函数?

共有1个答案

夏侯渊
2023-03-14

试试这个,

import * as utils from 'tns-core-modules/utils/utils';

if (utils.ios) {
    (<any>utils.ios)._layoutRootView = function(rootView, parentBounds) {
        if (!rootView || !parentBounds) {
            return;
        }

        const size = parentBounds.size;
        const width = utils.layout.toDevicePixels(size.width);
        const height = utils.layout.toDevicePixels(size.height);

        const widthSpec = utils.layout.makeMeasureSpec(width, utils.layout.EXACTLY);
        const heightSpec = utils.layout.makeMeasureSpec(height, utils.layout.EXACTLY);

        rootView.measure(widthSpec, heightSpec);

        const origin = parentBounds.origin;
        const left = origin.x;
        const top = origin.y;

        rootView.layout(left, top, width, height);
    }
}
 类似资料:
  • 我想为谷歌地图上的每个标记创建一个自己的窗口。我尝试了这个: 不幸的是,只有第二个标记有一个包含的窗口。如果我单击第一个标记,那么带有的第二个标记的窗口就会弹出。我不明白为什么会发生这种情况。 我注意到,如果我为第二个标记和第二个窗口使用一个新变量,每个标记都有自己的窗口,如下所示: 但我完全不明白为什么我需要使用新的变量。为什么我不能覆盖旧的变量? 注意:这个问题是关于如何获取多个不同的info

  • 我正在尝试自定义信息窗口,并在加载地图时显示它。自定义信息窗口出现了,但是,除了默认的信息窗口背景(白色)之外,我还没有为出现的标记设置图标?为什么我会得到这个默认值? 以下是我尝试的内容的屏幕截图: 我不想要白色窗口和标记图标?我正在尝试实现以下截图:如何使用Android map API v2创建自定义形状的位图标记 以下是我正在尝试的:

  • 还有另外四个if语句,它们对其他类别做同样的事情。 它会显示标记,但当我单击标记时,它会显示上次创建的标记的信息窗口。

  • 我想创建一个谷歌地图标记列表,这些标记填充关于这些特定位置的信息窗口,并在信息窗口内链接到维基百科关于该位置的文章。我在这个单击函数中进行Ajax调用,并且这个函数在一个

  • 我正在用VueJS在Laravel 5.7中构建一个应用程序。我有一个谷歌地图(使用vue2谷歌地图构建),有200个标记,每个标记都有一个信息窗口。我想在infoWindow中包含一个路由器链接,但由于该链接是作为字符串传递的,所以Vue似乎没有对其进行解析。 这是我目前的组件-除了路由器链接,所有的工作 有人能建议一种方法来解析路由器链接吗? 谢谢你

  • 我想从谷歌地图API接收道路信息,就像普通的街道信息一样。 例如,在谷歌地图应用程序中,您可以看到每条道路的交通情况。是否有任何方法可以在数据中接收此信息,而不仅仅是在屏幕上查看? 我需要得到的信息,如名称,交通,限速和起点和终点。 我考虑一些类似于现有街道信息的东西,我会给出一个位置(long,lat),系统会返回附近最近的道路(也可能是十字路口)。 有没有办法通过谷歌地图API获取这些信息?如