2

您好我有以下使用 Google Maps API 版本 3 的网页。是否可以创建一个按钮或右键单击地图并将链接发送给类似于 Google Maps“链接”按钮的人,该按钮允许您“粘贴链接在电子邮件或即时消息中”的放大级别和您正在查看的范围?我已经搜索过这个但找不到任何东西。谢谢!

https://netfiles.uiuc.edu/alouchio/shared/ztest.shtml

4

1 回答 1

2

没有什么开箱即用的东西可以让你做到这一点,但你自己实现它应该不难。首先,您需要为可用于导航到特定位置的页面定义一些查询字符串参数。要设置正确的位置和缩放级别,您需要三个参数:纬度、经度和缩放,因此您的网址可能类似于:

https://netfiles.uiuc.edu/alouchio/shared/ztest.shtml?lat=40.300842&lng=-86.864734&z=6

然后,当您初始化地图时,您将需要检查这些参数是否存在,如果存在,请适当定位地图:

要读取查询字符串,我们需要一个函数来处理该部分,这是一个简单的函数:

// A function to get the qs params, borrowed from http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
} 

然后您可以检查是否存在正确的查询字符串参数,应该在初始化地图后调用...

var params = getUrlVars();   

if (params["lat"] &&  params["lng"] && params["z"])    
{        
    map.setCenter(new GLatLng(parseFloat(params["lat"]), 
        parseFloat(params["lng"]), parseInt(params["z"]));
}

最后,要生成链接,可以创建一个按钮来生成链接信息:

function showLink()
{   
    var ctr = map.getCenter();
    alert("https://netfiles.uiuc.edu/alouchio/shared/ztest.shtml?lat=" 
+ ctr.lat().toString() + "&lng=" + ctr.lng().toString() + "&z=" + map.getZoom().toString());
}

而不是 map.setCenter 我使用:

var myOptions1 = {
  zoom: parseInt(params["z"]),
  center: new google.maps.LatLng(parseFloat(params["lat"]), parseFloat(params["lng"])),
于 2012-04-20T21:06:09.040 回答