gpt4 book ai didi

java - 从 URL Google map 获取经纬度

转载 作者:搜寻专家 更新时间:2023-11-01 08:20:26 27 4
gpt4 key购买 nike

我需要一种方法来找出谷歌地图中某个地方的纬度和经度,提供了它的链接。或者,如果可能的话,我可以在 map 上绘制我的应用程序内的点,或者使用某种 Intent 从谷歌地图共享纬度经度,这样我就可以从我的应用程序中接收它。以上任何一种情况是否可以直接或间接地发生?

简而言之,我有一个谷歌地图 URL(我可能已经在 WhatsApp 或类似平台上收到了),并且使用它,不知何故,我需要在我的应用程序中获取该地点的纬度和经度,即使这是一种间接的方式。我对 places API 不感兴趣,因为它有限制。

几个小时以来一直在尝试找到解决方案,但没有找到任何相关内容。

编辑:

我尝试使用的链接示例:

(无法使用 URL 缩短器,因为 SO 不允许,请将 [dot] 替换为 .)

最佳答案

似乎没有一种适用于所有类型编码 URL 的通用解决方案,但对于描述的两种,您可以使用:

1) 对于类似 https://goo[dot]gl/maps/fSQSTjDR32m 的 URL - 谷歌 URL Shortener API请求如下:

https://www.googleapis.com/urlshortener/v1/url?shortUrl=<YOUR_SHORT_URL_e_g_https://goo[dot]gl/maps/fSQSTjDR32m>&key=<YOUR_APP_KEY>

注意!您需要在 Developer Console 上启用 URL Shortener API 的 Android 应用程序的有效 key

您可以使用 HttpURLConnection得到回应

...
URL url = new URL("https://www.googleapis.com/urlshortener/v1/url?shortUrl=...");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
...

或使用 URL Shortener API Client Library for Java .有关详细信息,请查看 this Ogre的问题和答案。

因此,对于您缩短的 URL,您应该得到如下 JSON 响应:

{
"kind": "urlshortener#url",
"id": "https://goo<.>gl/maps/fSQSTjDR32m",
"longUrl": "https://www.google.co.in/maps/place/10%C2%B007'16.8%22N+76%C2%B020'54.2%22E/@10.1213253,76.3478427,247m/data=!3m2!1e3!4b1!4m6!3m5!1s0x0:0x0!7e2!8m2!3d10.1213237!4d76.348392?shorturl=1",
"status": "OK"
}

哪里longUrl标签包含具有所需经纬度的 URL。根据this树人的回答:

It is not the first set of coordinates@10.1213253,76.3478427 - that is the center of the Maps' viewport. The coordinates of the point of interest comes after their fid and is indicated by !3d10.1213237!4d76.348392 Where the !3d parameter indicated the latitude and the !4d parameter indicates the longitude of the point of interest.

你可以在 longUrl 中找到经纬度通过 !3d!4d前缀或使用正则表达式。

2) 对于类似 https://maps.google.com/?cid=14927999966769665575&hl=en&gl=gb 的 URL你可以使用 Google Maps API和 URL 请求,如

https://maps.googleapis.com/maps/api/place/details/json?cid= &key=

哪里<YOUR_CID> = 14927999966769665575<YOUR_APP_KEY>启用了 Google Maps API 的 Android 应用程序的有效 key (在开发者控制台上与 URL Shortener API 相同)。更多详情请查看this Leon的答案.您可以使用 HttpURLConnection获得像第 1 点那样的响应:

...
URL url = new URL("https://maps.googleapis.com/maps/api/place/details/json?cid=...");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
...

结果你应该得到带有标签 geometry 的大 JSON和“子标签”location

...
"geometry" : {
"location" : {
"lat" : 10.1652839,
"lng" : 76.218744
},
"viewport" : {
"northeast" : {
"lat" : 10.1666328802915,
"lng" : 76.22009298029151
},
"southwest" : {
"lat" : 10.1639349197085,
"lng" : 76.21739501970849
}
}
},
...

你可以从中得到经纬度。

对于其他类型的 URL(不是 https://goo[dot]gl/maps/fSQSTjDR32mhttps://maps.google.com/?cid=14927999966769665575&hl=en&gl=gb ),您应该找到其他解码和提取经纬度的方案。

关于java - 从 URL Google map 获取经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51907305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com