谷歌地图 - 当前位置
Posted
技术标签:
【中文标题】谷歌地图 - 当前位置【英文标题】:Google Map - Current location 【发布时间】:2010-03-20 09:03:57 【问题描述】:我想获取当前用户位置的地址字符串。这可能吗?
非常感谢。 问候
【问题讨论】:
【参考方案1】:用户的位置在 google.loader.ClientLocation 中可用(如果 IP 已知,这将包含基于客户端 IP 的猜测)
google.loader.ClientLocation
当应用程序使用 AJAX API 加载器,加载器尝试 根据客户的地理位置定位客户 IP地址。如果这个过程成功, 客户的位置,范围为 地铁级别,可在 google.loader.ClientLocation 属性。 如果该过程未能找到匹配项, 此属性设置为 null。
http://code.google.com/apis/ajax/documentation/#ClientLocation
【讨论】:
【参考方案2】:如果您想获取街道地址!
包括 JS 和 MAP Api Key,keep all together from the wizard
我的代码如下所示:(也使用了一点 jQuery)
var geocoder = null;
var lat = null;
var lng = null;
$(function()
if (GBrowserIsCompatible())
if (google.loader.ClientLocation &&
// i used this here cause not always
//this retrieve the correct LAT & LON
// so set it manually
google.loader.ClientLocation.address.country_code == "IT" )
lat = google.loader.ClientLocation.latitude;
lng = google.loader.ClientLocation.longitude;
else
//alert( 'Insert Your Latitude & longitude manually!' );
lat = '42.464826';
lng = '14.214095';
//creat the full LAT + LON
points = new GLatLng( lat , lng );
//get the Street Address
get_address(points);
);
function get_address(latlng)
if (latlng)
geocoder = new GClientGeocoder();
geocoder.getLocations(latlng, function(addresses)
if(addresses.Status.code != 200)
alert("reverse geocoder failed to find an address for " + latlng.toUrlValue());
else
address = addresses.Placemark[0];
var myhtml = address.address;
$('#address').text(myHtml);
);
;
peraphs 阅读此链接也可能有所帮助:
Get street address at lat/long pair
【讨论】:
【参考方案3】:如果您需要比 IP 地理定位更精确的信息,您可以在支持的浏览器(尤其是 Firefox 3.5 和 Mobile Safari)中使用 W3C Geolocation API 来请求用户的纬度和经度,然后使用 Google's client-side reverse geocoding service 猜测用户的近似值街道地址。 (my test page 中包含这两个步骤的代码示例。)
如果您走这条路,请务必提前向您的用户解释您为什么要请求他们的位置以及您如何使用他们的信息(例如,在他们实际提交表单之前您不会存储它),因为它在技术上是 API 所要求的,因为有些用户会被您猜出他们的街道地址的容易程度吓到。
【讨论】:
【参考方案4】:是的,可以使用 html 5 和 Google API 3 来实现,在给定的代码中,您必须更改 APIKey 并且 map-canvas 是 html 正文中的一个元素
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=yourAPIKey&sensor=false"></script>
<script type="text/javascript">
var lat;
var lng;
function initialize()
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(showPosition);
function showPosition(position)
lat = position.coords.latitude;
lng = position.coords.longitude;
var myLatlng = new google.maps.LatLng(lat, lng);
var myTittle = "My Current Location! Lat: " + lat + "lng: " + lng;
var marker = new google.maps.Marker(
position: myLatlng,
title: myTittle
);
var mapOptions =
center: myLatlng,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
;
var map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
marker.setMap(map);
google.maps.event.addDomListener(window, 'load', initialize);
</script>
【讨论】:
【参考方案5】:我正在寻找如何绘制当前位置和目的地位置的地图。为了实现这一点,我就是这样做的:
注意* 将 YOUR_DESTINATION_ADDRESS 替换为以下格式的地址:“147+Wyndham+Street+N+,+Suite+206,+Guelph,+On,+N1H+4E9”
<div id="Map" style="width: 100%; height: 600px;"> </div>
<script type="text/javascript">
$(function()
var zoom = 11;
function success(position)
var LAT = position.coords.latitude;
var LONG = position.coords.longitude;
$('#Map').append('<p>Current Latitude: ' + LAT + '<br/>Current Logitude: ' + LONG +'<br/><br/>Note* This may not display your exact location, but just your city. Works better on mobile devices</p>');
var map = '<iframe style="width: 100%; height: 600px;" frameborder="0" scrolling="no" margin margin src="http://maps.google.ca/maps?source=s_d&saddr=' + LAT +',+' + LONG +'&daddr=**YOUR_DESTINATION_ADDRESS**&ie=UTF8&t=hz=' + zoom + '&output=embed"></iframe>';
$('#Map').append(map);
function error()
/*Error Code*/
function MakeMap()
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(success, error);
MakeMap();
);
</script>
【讨论】:
以上是关于谷歌地图 - 当前位置的主要内容,如果未能解决你的问题,请参考以下文章