根据用户的地理位置居中谷歌地图
Posted
技术标签:
【中文标题】根据用户的地理位置居中谷歌地图【英文标题】:Centering google map based on user's geolocation 【发布时间】:2013-12-30 23:11:06 【问题描述】:我的网站上有一个谷歌地图 (v2),我用它来获取用户的纬度和经度,以将它们作为表单发送。我需要的是使这张地图最初以用户的地理位置为中心。我知道这不是一个实际的问题,但我对 google maps api 不是很熟悉,并且网络上的所有教程都基于 google map v3,我不想麻烦迁移到 v3 并重新编写所有的东西.因此,如果有人引导我朝着正确的方向使此功能在 gmap(v2) 上运行,我将不胜感激。这是我的代码的样子:
if (GBrowserIsCompatible())
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var center = new GLatLng(43.65323, -79.38318);
map.setCenter(center, 15);
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(function (position)
initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(initialLocation);
);
geocoder = new GClientGeocoder();
var marker = new GMarker(center,
draggable: true
);
map.addOverlay(marker);
document.getElementById("b-lat").value = center.lat().toFixed(5);
document.getElementById("b-longt").value = center.lng().toFixed(5);
GEvent.addListener(marker, "dragend", function ()
var point = marker.getPoint();
map.panTo(point);
document.getElementById("b-lat").value = point.lat().toFixed(5);
document.getElementById("b-longt").value = point.lng().toFixed(5);
);
GEvent.addListener(map, "moveend", function ()
map.clearOverlays();
var center = map.getCenter();
var marker = new GMarker(center,
draggable: true
);
map.addOverlay(marker);
document.getElementById("b-lat").value = center.lat().toFixed(5);
document.getElementById("b-longt").value = center.lng().toFixed(5);
GEvent.addListener(marker, "dragend", function ()
var point = marker.getPoint();
map.panTo(point);
document.getElementById("b-lat").value = point.lat().toFixed(5);
document.getElementById("b-longt").value = point.lng().toFixed(5);
);
);
【问题讨论】:
【参考方案1】:查看我的其他帖子:android maps v2 - get map zoom
要简单放大,请使用:
float zoomLevel = 20.0f;
map.animateCamera(CameraUpdateFactory.zoomTo(zoomLevel);
要缩放到标记,请使用:
LatLng l = new LatLng(LATPOSITION, LONGPOSITION); float zoomLevel =
20.0f; map.animateCamera(CameraUpdateFactory.newLatLngZoom(l, zoomLevel));
将这些添加到您希望发生缩放的位置。
注意:这是针对 Java android 的,您可能需要为网络编辑它。
【讨论】:
【参考方案2】:我通过navigator
对象找到了解决方案。初始化地图后,我用这段代码找到了用户的纬度和经度:
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(function (position)
userLatitude = position.coords.latitude;
userLongitude = position.coords.longitude;
center = new GLatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(center, 15);
addMapMarker();
);
if(typeof userLatitude == 'undefined' && typeof userLongitude == 'undefined')
center = new GLatLng(43.65323, -79.38318);
map.setCenter(center, 15);
addMapMarker();
else
center = new GLatLng(43.65323, -79.38318);
map.setCenter(center, 15);
addMapMarker();
【讨论】:
以上是关于根据用户的地理位置居中谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章