谷歌地图标记被放置在错误的地方

Posted

技术标签:

【中文标题】谷歌地图标记被放置在错误的地方【英文标题】:Google Maps marker getting placed in wrong place 【发布时间】:2013-12-20 11:18:42 【问题描述】:

我有一个表格,可以在其中输入存储在表格中的 DMS 格式的位置坐标。我通过使用http://itouchmap.com/latlong.html将标记拖到我需要的位置来找到坐标

度、分和秒由空格而不是通常的符号分隔。

例子:

纬度:9 59 35.9274 液化天然气:76 17 49.0524

这些值存储在 varchar 的字段中并按原样存储。

谁能告诉我问题出在哪里?

但是当我检索这些坐标并在 Google 地图上绘制时,标记位于其他位置。

附注: 当坐标以 DDD 格式存储时,标记放置效果很好。

我使用的代码是从https://developers.google.com/maps/articles/phpsqlajax_v3?csw=1复制粘贴的

【问题讨论】:

如果我理解正确,那么您必须将 latlng 从 DMS 格式更改为十进制度纬度/经度值。 我最初使用的是 float(10,6)。但是我使用的 GPS 设备给了我 DMS 格式的坐标。请谷歌 40 42 51, -74 0 22。您可以看到标记被放置在地图上,我认为这意味着我们也可以选择以 DMS 格式输入它们,而不仅仅是 DDD 格式。谢谢... 【参考方案1】:

文章规定long和late应存储为decimal(10,6)类型,以允许小数点前四位和小数点后六位。地图 api 不会以任何其他格式可靠地接受这些坐标。

您必须先处理从度分秒到十进制的转换,然后才能存储到表格中,然后读出到您的地图中。

推荐阅读:how to convert between degrees, minutes, seconds to Decimal coordinates

http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html

Regex/javascript to transform Degrees Decimal Minutes to Decimal Degrees

编辑见链接here。 Google 地图 API 不支持 DMS,除非以非常特定的方式实现(在这种情况下,您自己格式化字符串并且可以简单地转换?您的选择。

问题在于 API 需要将经度和纬度作为整数,因此不接受空格。

如果我是正确的(在javascript中),转换为十进制就像这样简单:

var = hour+(((minute*60)+(second))/3600);

【讨论】:

我最初使用的是 float(10,6)。但是我使用的 GPS 设备给了我 DMS 格式的坐标。请谷歌 40 42 51, -74 0 22。您可以看到标记被放置在地图上,我认为这意味着我们也可以选择以 DMS 格式输入它们,而不仅仅是 DDD 格式。谢谢...

以上是关于谷歌地图标记被放置在错误的地方的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图每次都无法在地图上放置一些标记

如何在谷歌地图上放置标记

只允许用户在谷歌地图上放置 1 个标记

如何在谷歌地图上放置图标标记,图标数量是不是有配额?

如何根据标记位置设置谷歌地图的缩放级别

谷歌地图精度问题