如何在Google地图上添加3d对象作为标记,就像Uber一样

时间:2016-12-05 12:58:15

标签: ios swift google-maps google-maps-sdk-ios

我想添加一个用于在地图上显示汽车的3D标记,像Uber一样旋转,但我无法找到有关在Google Maps SDK for iOS上添加3d对象的任何信息。

感谢任何帮助。

显然没有人看到OP和我看到的是什么,这里的video优步车转向90度。逐帧播放,您会注意到它不是简单的图像旋转。要么优步经历了每辆车的360度角度的麻烦,要么它真的是一个3D模型。对每辆车做360度图像对我来说都是愚蠢的。

8 个答案:

答案 0 :(得分:26)

据我所知,他们没有使用3D对象。它们也不能在不同角度的400辆汽车图像之间制作动画。他们正在混合使用旋转图像资源,并在不同角度对约50-70个汽车图像进行动画制作。幻觉是完美的,因为它确实看起来像他们使用3D汽车模型!

看看这辆优步车的GIF转弯(Dropbox link): GIF showing a Uber car turning a corner

我们可以清楚地看到,阴影和汽车的视角不会像汽车的旋转一样频繁更新。

这里我以不同的角度覆盖了2辆汽车的图像,但是使用相同的汽车图像: Uber car images at 2 different angles

我们可以看到地图旋转了~5度,但汽车图像非常清晰,因为它没有改变,只是旋转了。

答案 1 :(得分:5)

首先,它们是 NOT 3D对象,如果这是你所指的(虽然可以创建一个,但浪费时间)它们只是在Photoshop或Illustrator(大多数情况下)中创建的3D图像有3D视角(它也是视网膜优化,这就是为什么它看起来非常清晰)。

您看到汽车旋转的原因是因为图像所在的UIImageView被旋转(主要是使用CABasicAnimation)使用3D设备位置的计算基础(相同技术使用)用于运行应用以跟踪您的位置等),您可以使用Core Location来检索该数据。

这是一个过程,但非常可行。祝你好运!

答案 2 :(得分:3)

Uber仅released a blog post documenting this

车辆似乎是在3D软件中建模的,然后将描绘不同角度的图像资产导出到该应用程序。根据车辆在地图上的位置及其方向,使用不同的资产。

enter image description here

答案 3 :(得分:1)

我相信一对标记图像,一个是真实的标记,另一个是较暗的模糊阴影,可以以更便宜的方式完成操作。将阴影标记放在标记下方,将X和Y轴移动到您认为适当放置阴影的位置,最后移动它们并同时旋转它们(在Web版本中,您可能需要单独的旋转图像)时间应该能够[重新]创造错觉。

@Felix Lapalme已经对它进行了简单介绍,并没有进一步说明它。

答案 4 :(得分:0)

谢谢所有答案都是有效的。

如果您愿意,可以观看视频的运行情况,

您可以生成精灵片(约60个)图块

我如何实现它以及所需的工具

  • 3d源汽车模型。

  • 使用路径动画椭圆形的搅拌机,对照相机进行动画处理。

  • 摄像机从顶视图到底视图围绕汽车旋转

  • 使用Blender生成的精灵渲染3d标记,对于角度使用位置更新时的方位变化。

您的车辆需要渲染以支持大多数屏幕,因此每个图块的基本尺寸为64 px,我根据屏幕的dpi进行缩放

结果实现

https://twitter.com/ronfravi/status/1133226618024022016?s=09 enter image description here

答案 5 :(得分:0)

我尝试使用Scenekit旋转标记,并且可以工作,但是如果使用许多模型,则会消耗内存和Ram 请检查我的项目 https://github.com/HilalAH/3dMarker

答案 6 :(得分:0)

查看我的仓库 我使用了dea模型,并根据航向变量将其打开 https://github.com/hilalalhakani/HHMarker

答案 7 :(得分:-1)

如果要将图像旋转为标记。想要显示一个可以使用的移动对象.git图像。这对你来说很有帮助。

Swift 3

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)

//Rotate a marker
let degrees = 90.0
let london = GMSMarker(position: position)
london.title = "London"

//Customize the marker image
london.icon = UIImage(named: "YourGifImageName")
london.groundAnchor = CGPoint(x: 0.5, y: 0.5)
london.rotation = degrees
london.map = mapView

了解更多信息Please check here