【问题标题】:Marking Google Static Maps via Google Places API通过 Google Places API 标记 Google 静态地图
【发布时间】:2016-07-28 21:02:11
【问题描述】:

伙计们,我是这张地图的新手,它单独工作得很好。我已经理解了许多概念等。但是,我一直坚持我不知道如何在静态地图上标记通过 API 获取的位置。

这是一个可爱的静态地图http请求:

https://maps.googleapis.com/maps/api/staticmap?center=40.75901,-73.98447&zoom=17&scale=2&size=640x640&maptype=roadmap&markers=color:green|label:C|40.75901,-73.98447

让我说得详细一点。我尝试让它们在 Unity 5 上工作,并将响应保存为纹理以放入 3d 模型中。结果是这样的:

到目前为止一切都很好,但我无法超越。假设我想获得公交车站并将 3d 公交车站模型放到地图上。我可以得到该地区车站的坐标。现在,如何将 3d 模型放到红色圆圈上?

  • 我知道地图的中心坐标
  • 我知道汽车站的坐标
  • 我不知道的是场景中对应的3d坐标

你们能帮我找到解决办法吗?

PS:我遇到了一个术语“墨卡托投影”,但我无法将它注入到我的项目中:S

【问题讨论】:

    标签: c# google-maps unity3d google-places-api google-static-maps


    【解决方案1】:

    我建议您按照以下步骤操作:

    1. 了解地图的边界:地图的东北和西南坐标。
    2. 了解地图的大小:在本例中,您设置为 640x640。
    3. 制作一个函数,将现实世界中公交车站的坐标转换为您的地图坐标。

    例子:

    • 您的界限是:NE (91.5, 12.7) 和 SW (87.3, 8.4)。
    • 您的地图图片为 600x600 像素。这意味着如果 (0,0) 在 您的图片对应于左上角,即 NW = (91.5, 8.4)。
    • 图片的宽度为 600,从西到东,即 (12.7 - 8.4) = 4.3,这意味着每个像素在坐标中覆盖 4.3/600 ~= 0.00716666666667 个单位。
    • 假设我们在坐标 (88.37, 10.125) 中有一个点,我们要计算 经度 坐标的像素点:((10.125 - 8.4) / (12.7 - 8.4)) * 600 = 241 像素。

    对纬度做同样的事情,你就拥有了。简单吧?

    【讨论】:

    • 您的解决方案似乎取决于了解地图图块的边界......这基本上是 OP 首先需要弄清楚的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多