我要求用户写一个地址,我必须在地图上显示。我知道如何编写脚本,但我不知道如何获得具有街道地址的坐标。我该怎么办?
PS:我正在使用传单
答案 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();