从谷歌地图网址

时间:2015-06-29 02:04:32

标签: c# visual-studio google-maps

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

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

        wbGMap.Navigate(queryAddress.ToString());

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

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

提前感谢任何提示或建议。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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"