从 Google 地图 URL 中提取坐标

问题描述 投票:0回答:2

我一直在尝试使用 C# 尝试创建一个 Windows 窗体,该窗体具有具有以下初始 URL 的 Web 浏览器组件:

 queryAddress.Append("https://www.google.com/maps/place/Costa+Rica/&output=embed");
 wbGMap.Navigate(queryAddress.ToString());

我查看了这里和其他网站,希望找到一种方法来保存位置的纬度和经度值。例如,如果我使用地图搜索中的构建在地图上搜索 X Hotel,我希望获取这些坐标并通过按钮事件将它们显示在每个文本字段上。然而到目前为止我找到的唯一解决方案是复杂的 google API。

有没有一种简单的方法可以提取这两个值以供以后使用?

提前非常感谢您的任何提示或建议。

c# visual-studio google-maps
2个回答
2
投票

当您玩过字符串操作时的备忘单:

string url = "https://www.google.com/maps/place/Costa+Rica/@10.3118691,-84.2370058,6z/data=!4m2!3m1!1s0x8f92e56221acc925:0x6254f72535819a2b";
int pos1 = url.IndexOf("/@");
string rightpart = url.Substring(pos1+("/@".Length));
int pos2 = rightpart.IndexOf("/");
string coords = rightpart.Substring(0, pos2);
var split = coords.Split(',');
var lat = split[0];
var lon = split[1];
var zzz = split[2];

或高级正则表达式版本:

string url = "https://www.google.com/maps/place/Costa+Rica/@10.3118691,-84.2370058,6z/data=!4m2!3m1!1s0x8f92e56221acc925:0x6254f72535819a2b";
var match = Regex.Match(url, @"http.*/@(?<lat>-?\d*\.\d*),(?<lon>-?\d*\.\d*),(?<zzz>\d*z).*");
var lat2 = match.Groups["lat"].Value;
var lon2 = match.Groups["lon"].Value;
var zzz2 = match.Groups["zzz"].Value;

0
投票
library(stringr)
url = "https://www.google.com/maps/place/Costa+Rica/@10.3118691,-84.2370058,6z/data=!4m2!3m1!1s0x8f92e56221acc925:0x6254f72535819a2b"
str_extract(url,'\\d+\\.\\d+\\,\\-\\d+\\.\\d+') %>% str_split(',') %>% unlist()
# [1] "40.7540123"  "-73.9841851"
© www.soinside.com 2019 - 2024. All rights reserved.