【发布时间】:2015-06-18 23:07:57
【问题描述】:
我要求用户写一个地址,我必须在地图上显示它。我知道如何编写脚本,但我不知道如何获取具有街道地址的坐标。我能做什么?
PS:我正在使用传单
【问题讨论】:
标签: maps coordinates leaflet
我要求用户写一个地址,我必须在地图上显示它。我知道如何编写脚本,但我不知道如何获取具有街道地址的坐标。我能做什么?
PS:我正在使用传单
【问题讨论】:
标签: maps coordinates leaflet
我在 SmartyStreets 工作,我们有一项服务可以让您获取地址的纬度和经度。如果您使用此方法,您需要创建一个帐户以获取身份验证 ID/令牌对。
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var addresses = JSON.parse(this.responseText);
if(addresses.length == 1) {
var latitude = addresses[0].metadata.latitude;
var longitude = addresses[0].metadata.longitude;
}
};
xhr.open("get", "https://api.smartystreets.com/street-address?street=1+Santa+Claus+North+Pole+AK&auth-id=<AUTH-ID-HERE>&auth-token=<AUTH-TOKEN-HERE>", true);
xhr.send();
【讨论】:
首先,您必须在 HTML 代码的头部包含地理编码器的 .js 文件,例如,我使用了这个:https://github.com/perliedman/leaflet-control-geocoder。像这样:
<script src="Control.Geocoder.js"></script>
然后你必须在你的 .js 中初始化 Geocoder:
geocoder = new L.Control.Geocoder.Nominatim(); 然后您必须指定要查找的地址,您可以将其保存在变量中。例如:
var yourQuery = (Address of person);
(也可以从数据库中获取地址,然后保存到变量中)
然后您可以使用以下代码将您的地址“地理编码”为纬度/经度(坐标)。此函数将返回地址的纬度/经度(坐标)。您可以将纬度/经度(坐标)保存在变量中,以便稍后将其用作标记。然后您只需将标记添加到地图。
geocoder.geocode(yourQuery, function(results) {
latLng= new L.LatLng(results[0].center.lat, results[0].center.lng);
marker = new L.Marker (latLng);
map.addlayer(marker);
});
【讨论】: