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