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

当手机旋转(方向改变)时,如何最好地重新创建标记/折线

刘英彦
2023-03-14

背景:

  • 开发一个使用Android Google Map v2的原生Android应用程序,需要使用Android.support.v4.App.fragmentactivity。在Android V2.2上运行。
    null

在查看标记getid()的描述时,当Marker.getid()方法的Google文档声明如下时,我感到困惑:

当从包还原映射时,该映射上的标记也将被还原。但是,这些标记随后将由不同的标记对象表示。在这样的恢复之后,可以使用标记的id来检索标记对象的新实例。

Google文档(上面的粗体文本)让它听起来像标记只是自动恢复,而不需要采取任何行动。这不是我的经验...也许我误解了所说的话。或者您必须在包中显式地保存map?有人能澄清一下这是什么意思吗?

假设我必须通过适当的savedinstance.put...方法显式地将标记和折线保存到包中,我应该保存整个标记,还是应该保存标记id并使用标记id检索标记信息以重新显示标记?我找不到允许保存整个标记的put方法。

我注意到Google Maps Android API v2的MapFragment部分声明如下:

从GoogleMap获得的任何对象都与视图相关联。重要的是不要在视图的生命周期之外保留对象(例如标记)。否则,它将导致内存泄漏,因为视图无法释放。

问候。

共有1个答案

楚修为
2023-03-14

我是否可以将标记/折线“保存”为包的一部分,并通过使用适当的“savedinstance.put.”将它们保存在onSaveInstanceState中来重新显示它们。方法,然后在onCreate中使用适当的“savedinstanceate.get..”“还原”它们。方法。

没有。

Google文档(上面加粗的文本)让它听起来像标记只是自动恢复,而不需要采取任何行动。这不是我的经验...也许我误解了所说的话。或者您必须在包中显式地保存map?有人能澄清一下这是什么意思吗?

是的。保持对标记或任何其他可视对象的静态引用会导致泄漏。

并不是说回答了你所有的问题和关注就更接近解决方案了,所以下面是我的建议。

我假设您有一个数据集,标记折线是从其创建的,并可能在从WebService获取后将其存储在DB中。现在,如果您在活动中的AsyncTask中从数据库加载它,或者甚至没有将它存储在DB中,而只是直接在活动中提取它--这是不好的。

我们可以争论这个主意是好是坏,我会改进答案,但这需要更多关于上下文的信息:

  • 有多少标记和折线
  • 您还有哪些其他数据
  • 您的模型放在哪里

当然还有另一种方法:您可以在onsaveInstancEstate中发送markerhtml" target="_blank">options。如果您保持它是最新的,或者标记没有更改,并且它们不太多,这可能对您有用。我无法理解通过IPC发送成千上万的对象在每个旋转或按下主页按钮。

 类似资料:
  • 我正在开发一个应用程序,基本上有一个行动栏。当我的应用程序启动时,活动创建片段并将它们附加到每个标签上,所以当我切换时,我会得到不同的视图。 当我试图旋转设备时,问题就出现了。经过一番挣扎,我注意到Android会像这样自动重新创建之前添加的片段:

  • 我的mapview(osmbonuspack)旋转到行走的方向。 我如何在地图上旋转标记的标题,使它们是水平的--即易于阅读?我看到标记本身不需要任何旋转,而地图是转动的。 可以肯定的是:这是关于文字,是在倒置的眼药水附近。这不是气泡中的信息。

  • 虽然我的问题主题似乎是许多PDF操作包和工具都支持的特性,但我需要明确指出,我不想旋转PDF。 我有一个PDF,它显示了一个纵向(A4),尺寸为WxH 297x210(A4旋转)。 现在,我需要实现的是,这个PDF有横向方向,同时保留尺寸。 我不确定这需要我做什么。 如果我使用Adobe Illustrator将文档格式更改到所需的位置,我还需要旋转内容。如果我将此页面放入设计糟糕的PDF中,此页

  • 我试图添加ALT标签到我的网站上的自定义船旋转木马和船页面。不知道我需要添加什么PHP以及把它放在哪里。旋转木马和页面上的图像都是缩略图。 我有一页。php和boat_旋转木马。php,这是我认为需要添加代码的地方。 不确定我是否应该将所有代码添加到此帖子。 这是指向该页面的链接https://www.embarkboathire.com.au/boats/ 你可以看到底部的船,每页有15艘。 }

  • 我在应用程序中使用Sherlock操作栏。我在菜单中使用了“ifRoom | with text”功能。如果我在纵向模式下测试代码,我只能看到图标,如果我将方向旋转到横向,我仍然只能看到图标。另一方面,如果我使用横向,我可以在纵向和横向上看到文本和图标。这意味着当屏幕旋转时,操作栏不会刷新。我如何修复? 菜单里,我有 我还在清单文件中使用这一行来修复 但它不起作用。我运行我的代码android 2

  • 在我的应用程序中创建一个数组列表,其中包含JSON的纬度和经度,并使用数组列表在地图中添加标记,但当纬度长改变标记从一个位置移动到另一个位置时,它会创建两个标记而不是移动,如果我给map.clear(),整个标记会禁用并启用,但我想删除旧标记,如果不使用map.clear(),这是怎么可能的,请帮助 需要专用void setupmapifneed(视图膨胀视图){