从地址获取地理坐标

时间:2015-06-18 23:07:57

标签: maps coordinates leaflet

我要求用户写一个地址,我必须在地图上显示。我知道如何编写脚本,但我不知道如何获得具有街道地址的坐标。我该怎么办?

PS:我正在使用传单

2 个答案:

答案 0 :(得分:0)

首先,您必须在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);    

(您也可以从数据库中获取地址,然后将其保存在变量中)

然后,您可以使用以下代码将您的地址“地理编码”为纬度/经度(coördinates)。此函数将返回地址的纬度/经度(coördinates)。您可以将纬度/经度(coördinates)保存在变量中,以便以后可以将其用于标记。然后,您只需将标记添加到地图中。

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);
});

答案 1 :(得分:0)

我为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();