【问题标题】:get geographical coordinates from address从地址获取地理坐标
【发布时间】:2015-06-18 23:07:57
【问题描述】:

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

PS:我正在使用传单

【问题讨论】:

    标签: maps coordinates leaflet


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-01-16
        • 2015-10-26
        • 1970-01-01
        • 1970-01-01
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 1970-01-01
        相关资源
        最近更新 更多