将Google Maps API v3链接粘贴到电子邮件中

时间:2012-04-20 19:18:20

标签: google-maps google-maps-api-3

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

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

1 个答案:

答案 0 :(得分: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"])),