如何在地理名称和地理编码器 api 中动态生成边界框

Posted

技术标签:

【中文标题】如何在地理名称和地理编码器 api 中动态生成边界框【英文标题】:how to make a bounding box generate dynamically in geonames and geocoder api 【发布时间】:2013-12-20 23:17:40 【问题描述】:

您好,当用户在地图中输入城市时,我正在尝试获取地震信息。现在我通过硬编码制作边界框(geonames 地震 api 需要)。我想将边界框设为输入城市的大小。我在 geocoder api v3 中看到这样做:

var geocoder = new google.maps.Geocoder();
   geocoder.geocode(  'address': address, function(results, status) 
      if (status == google.maps.GeocoderStatus.OK) 
        map.setCenter(results[0].geometry.location);
        map.fitBounds(results[0].geometry.viewport);
      
    );

问题 - 这不会让我得到 geonames 需要的东南西北。有人知道怎么做吗?

我当前的代码

var address = document.getElementById("address").value;
            geocoder.geocode(  'address': address, function(results, status) 
              if (status == google.maps.GeocoderStatus.OK) 
                  // Calculate bounding box based on the given address
                  var north = results[0].geometry.location.lat() + .5;
                  var south = results[0].geometry.location.lat() - .5;
                  var east = results[0].geometry.location.lng() + .5;
                  var west = results[0].geometry.location.lng() - .5;

                  var earthquake = 'http://api.geonames.org/earthquakesJSON?north=' + north + '&south=' + south + '&east=' + east + '&west=' + west + '&username=*****';

+5 -5 是坐标中的数字扩展以创建南北......等

【问题讨论】:

【参考方案1】:

你想使用google.maps.LatLngBounds object的结果[0].geometry.viewport

var north = results[0].geometry.viewport.getNorthEast().lat();
var south = results[0].geometry.viewport.getSouthWest().lat();
var east   = results[0].geometry.viewport.getNorthEast().lng();
var west   = results[0].geometry.viewport.getSouthWest().lng();

fixed fiddle

fiddle with return message from geonames

fiddle with hard-coded data that shows markers

【讨论】:

我还有一个问题。我的旧代码现在使用 latlngbounds 对象对每次地震都有标记,它们不再有任何理由可能会这样? 不知道。您发送的实际 URL 是什么?您是否收到任何 javascript 错误?显示地震的代码是什么样的? 这里是我所有的 javascript 的 jsfiddle ....问题是我没有错误:(jsfiddle.net/8BExC 我的小提琴甚至没有尝试执行是没用的,你需要调用你的代码来查看错误。 jsfiddle.net/8BExC/1 对不起,我不明白你的评论,你能解释一下吗?

以上是关于如何在地理名称和地理编码器 api 中动态生成边界框的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地理编码中视口和边界之间的区别

如何解析谷歌地图地理编码结果

地理网格搜索算法

如何在 Worklight 上要求 Google 地图地理编码脚本

d3 墨卡托地理边界到像素边界

如何使用谷歌地理定位 API?