android - 是否可以在 android Google maps API v2 的街景 View 中使用标记?

标签 android maps google-maps-api-2 google-street-view

我在我的应用程序中实现了街景 View ,我想在街景 View 中查看 map 标记,这可能吗?

最佳答案

可以通过自定义实现向 Android 中的 StreetView 添加标记。

你应该在你的StreetView上放置一个透明的SurfaceView

传递全景图。setOnStreetViewPanoramaCameraChangeListener(..) 和 panorama.setOnStreetViewPanoramaCameraChangeListener(..) 到您的表面 View 以更新相机位置位置

然后计算从您的相机位置到标记的距离,以及从您到标记的方位角

最后计算这些值到屏幕的投影 - 从表面 View 获取 View 高度、 View 宽度等,并将标记的位图绘制到表面 View 的位图 Canvas

将这些位图 保存到一个 HashMap 中以避免多次加载相同的位图。这将使您的绘图线程运行得更快。 稍后您可能想要从在线资源加载标记的图标。

仍然会有一些延迟,标记会有点颤抖,所以要平滑它们的放置。

不要忘记将标记屏幕投影左上右下位置保存在 HashMap 中以实现对标记的点击。

然后您需要将它们设为可点击的标记。

覆盖 SurfaceView 中的 onTouchEvent( .. )。

在某个字段中保存来自最新运动事件的位置,然后返回false以将触摸事件传递给底层街景。

在上层实现panorama.setOnStreetViewPanoramaClickListener ( .. ) - 将点击事件传递给SurfaceView,你就会知道你的点击的x/y 已保存字段中的位置。

遍历你的标记保存的屏幕位置 HashMap 以了解某个标记是否被真正点击,如果是 - 返回该事件到上层的最终监听器,您将知道何时点击了标记

查看视频,了解我的项目的结果 - 我花了 3 天时间来实现此功能 [android] street view custom marker

我不能在这里提供代码示例,但可以自由询问

关于android - 是否可以在 android Google maps API v2 的街景 View 中使用标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879529/

相关文章:

java - 当我在手机上运行此代码时强制关闭

android - 移动相机位置以适应关于标记高度的 LatLngBounds

javascript - 如何创建自定义、可共享的协作 map ?

java - 调整 'Google maps V2' 以占据屏幕的一半而不是整个屏幕

java - 如何更改所有按钮的背景颜色?

android - 如何在运行时更改 LinearLayout 的圆角颜色?

Android SoundPool 无法通过单 channel 播放

Android studio 首次运行卡在 "Downloading Components"窗口

ios - 交互式 map 和寻路

r - 我应该什么时候使用 geom_map?