我需要为每个请求对200个地址进行地理编码,每天执行大约3,000个请求.我将使用PHP来做这个服务器端.我看过如何将地址转换为纬度/经度?,但找不到谷歌地图HTTP请求API或雅虎地理编码REST API(不能使用JavaScript,因为这是服务器端)发送多个地址的方法.
我将主要使用它来根据坐标对地址进行排序,如果API支持,请填写每个地址的任何缺失数据.地址仅限于美国.地理编码的地址将来自用户输入,因此可以是自由形式,如"街道地址,邮政编码"或"城市,州"等.准确性对于坐标来说并不重要,例如在500英尺左右.
是否有免费的API来处理这个问题?有没有办法让雅虎或谷歌在请求中执行多个位置?
鉴于以下输入:
如何计算位置"m"的经度/纬度?
有没有办法通过REST访问Bing Maps API以从地址获取地理编码信息?这对谷歌和雅虎来说是微不足道的; 我正在寻找的是来自雅虎的这样的功能:
http://developer.yahoo.com/maps/rest/V1/geocode.html
(具体来说,请参阅该页面上的示例请求URL,但也可以想象具有简单"location"参数的URL,而不是单独的street,city,state和zip参数.)
我已经找到了通过REST使用Bing API的其他部分的示例,但没有任何内容可以访问Maps API,或者特别是地理编码功能.
是否有任何 google/Yahoo/Bing API 可以根据某个位置的邮政编码/地理代码提供本地业务结果?如果是,请告诉我。
如果 Google 地图有此类服务,请告诉我在哪里可以获得相关参考信息?
雅虎在http://in.maps.yahoo.com/上有单独的印度地图(比常规maps.yahoo.com具有更多详细信息)。但是,当我使用API时,它将转到默认地图。如何获得对YMaps印度的API访问权限?
我有一张带有大量标记的雅虎地图(~500).地图执行得很好,直到我关闭页面,此时它暂停(在Firefox中)并显示"停止运行此脚本?" 对话框(在IE7中).如果给予足够长的时间,脚本就会完成其工作.
我能做些什么来减少这种延迟吗?
这个剥离的代码表明了这个问题:
<script type="text/javascript">
var map = new YMap(document.getElementById('map'));
map.drawZoomAndCenter("Algeria", 17);
for (var i = 0; i < 500; i += 1) {
var geoPoint = new YGeoPoint((Math.random()-0.5)*180.0, (Math.random()-0.5)*360.0);
var marker = new YMarker(geoPoint);
map.addOverlay(marker);
}
</script>
Run Code Online (Sandbox Code Playgroud)
如果您动态添加和删除标记,我知道事件处理程序会发生一些内存泄漏,但这些是静态的(尽管问题可能是相关的).哦,我知道地图上的这些标记可能不是传达数据的最佳方式,但这不是我正在寻找的答案;)
编辑:根据以下建议,我尝试过:
window.onbeforeunload = function() {
map.removeMarkersAll();
}
Run Code Online (Sandbox Code Playgroud)
和
window.onbeforeunload = function() {
mapElement = document.getElementById('map');
mapElement.parentNode.removeChild(mapElement);
}
Run Code Online (Sandbox Code Playgroud)
但都没有奏效:(
我已经建立了围绕谷歌地图api的解决方案,但意识到当我将其部署到我的内部网时它不起作用.看完之后,你似乎需要一流的服务.是否有任何其他类似的地图api工具,您可以在您的Intranet网站上免费使用?
编辑:从我所看到的,似乎雅虎允许您使用内部网上的免费地图.任何人都可以确认你这样做.
yahoo-maps ×7
google-maps ×5
maps ×4
geocoding ×3
javascript ×3
bing-maps ×2
bing-api ×1
geolocation ×1
html ×1
yahoo-api ×1
yui ×1