如何从Google Map网址获取精确的lat lng

时间:2017-05-26 03:01:09

标签: javascript regex google-maps url substring

  

这是google地图网址的示例:   https://www.google.com.kh/maps/place/Photo+Cafe/@11.5209012,104.943248,17z/data=!3m1!4b1!4m5!3m4!1s0x310957360e265763:0x4a3989b09e7ae9c7!8m2!3d11.520896!4d104.945442?hl=en

我搜索过谷歌地图正则表达式,发现这篇文章:http://www.regexpal.com/93657

在上面的链接中,它的工作,但我从网址获得的lat lng不是正确的。

  

/ @ 11.5209012,104.943248,17z

我认为它来自地图的中心,因为当我移动地图时,网址也发生了变化。但对于数据参数:

  

/data=!3m1!4b1!4m5!3m4!1s0x310957360e265763:0x4a3989b09e7ae9c7!8m2!3d11.520896!4d104.945442?hl=en

     

11.520896,104.945442

我已经复制了数据参数中的数字,这是我想要的确切位置。

那么如何通过正则表达式从示例谷歌地图网址获取此编号11.520896,104.945442,还是有更好的方法来获得地图的正确位置?

由于

1 个答案:

答案 0 :(得分:1)

编辑:哎呀,必须使用带有js的捕获组... Pattern Demo/Breakdown

var regEx = /![34]d(-?[\d\.]+)/g;
var data  = "/data=!3m1!4b1!4m5!3m4!1s0x310957360e265763:0x4a3989b09e7ae9c7!8m2!3d11.520896!4d104.945442?hl=en";
var match = regEx.exec(data);

while(match !== null) {
    console.log(match[1]);
    match = regEx.exec(data);
}