好的,所以,这个想法是从Google地图网址创建一个包含纬度,经度和缩放级别数据的对象,非常简单:

function getMapData(url)
{
    let rawData = url.substr(url.search('@') +1, url.search('z')).split(',');
    const [lat,  lng,  zoom] = rawData;
    return {lat, lng, zoom};
}


现在,根据我的有限理解,这应该将所有内容从@提取到第一个z,但是我正在获得一个像这样的对象:

网址示例:https//www.google.com.ar/maps/place/Central+Park/@40.7828647,-73.9675491,17z/data=!3m1!4b1!4m5!3m4!1s0x89c2589a018531e3:0xb9df1f7387a94119!8m2!3d40.7828647!4d-73.9653551?hl=en

创建的对象:

{
    lat: 40.7828647,
    lng: -73.9675491,
    zoom: 17z/data=!3m1!4b1!4m5!3m4!1s0x89c2589a018531e3:0xb9df
}


所以我的问题是:为什么缩放值是这样的,为什么不停在字母z上?

小提琴:https://jsfiddle.net/1yt5qnwf/4/

最佳答案

如果选中documentation,substr期望:

str.substr(start[, length])


您真正想要的是substring,它期望:

str.substring(indexStart[, indexEnd])

10-07 19:28
查看更多