如何在地理名称和地理编码器 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 中动态生成边界框的主要内容,如果未能解决你的问题,请参考以下文章