【问题标题】:Codeigniter Google Maps API V3 Geocoding not workingCodeigniter Google Maps API V3 地理编码不起作用
【发布时间】:2013-10-04 09:09:37
【问题描述】:

我正在尝试使用 Biostall 的 Google Maps v3 API 来绘制一系列地址,但是当我尝试输入地址时,生成的 Lon Lat 每次都是 0、0。仅当我专门输入每个地址的经度和纬度时,它才有效。甚至 Biostall 在他的示例视频和文档中使用的条目也不起作用。我也在尝试使用 geocodeCaching 功能,请帮忙。

$this->load->library('googlemaps');

$config = array();
$config['zoom'] = 'auto';
$config['geocodeCaching'] = TRUE;
$config['region'] = 'US';
$config['sensor'] = FALSE;
$this->googlemaps->initialize($config);

$marker = array();
$marker['position'] = '37.429, -122.1519';
$marker['animation'] = 'DROP';
$this->googlemaps->add_marker($marker);

$marker = array();
$marker['position'] = '1600 Amphitheatre Parkway in Mountain View, Santa Clara County, California United States';
$marker['animation'] = 'DROP';
$this->googlemaps->add_marker($marker);

$data['map'] = $this->googlemaps->create_map();

echo print_r($data['map']['markers']);

标记输出:

数组 ( [marker_0] => 数组 ( [latitude] => 37.429 [longitude] => -122.1519 ) [marker_1] => 数组 ( [latitude] => 0 [longitude] => 0 ) ) 1

这是制作的地图:

BIOSTALL 的建议输出如下: 纬度:0 液化天然气:0 错误:OVER_QUERY_LIMIT 数据位置:http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+in+Mountain+View%2C+Santa+Clara+County%2C+California+United+States&sensor=false&region=US

【问题讨论】:

    标签: codeigniter google-maps google-maps-api-3 geocoding google-geocoder


    【解决方案1】:

    当它使用 PHP 给出 OVER_QUERY_LIMIT 时,可能意味着您的 IP 被阻止。尤其是当您尝试过多的地址以及在每个请求之间没有足够的等待时间时。尝试在每个请求之间添加暂停,但很可能您只能等到 IP 再次空闲(非常烦人),或者您可以尝试客户端 JavaScript。我不知道确切的原因,但反向地理编码在客户端和 JavaScript 上效果更好。您还可以从 Google 获得付费服务或使用 OpenStreetMap。

    【讨论】:

    • 谢谢!我等了一会儿,现在它正在工作。我必须密切关注此功能,以确保在我的客户使用它时它不会再次发生。要么注册 Google Maps API for Business。
    • 每年 10k 这么贵?
    • 天啊,真的有这么多吗?哎哟!
    【解决方案2】:

    感谢您使用我的图书馆。我有几个建议:

    1) 尝试在标记位置的末尾添加“, United States”。

    2) 我相信您可以在地图上设置“区域”参数。尝试将其设置为“美国”。

    3)如果还是不行,尝试进入库,找到get_lat_lon_from_address()函数,然后输出URL请求的结果。

    我希望这会有所帮助。我将考虑尽快添加一个调试模式,这应该有助于解决此类问题。如果还有其他问题,请告诉我:)

    史蒂夫

    【讨论】:

    • 谢谢@BIOSTALL,但仍然没有运气。我尝试像你说的那样在地址末尾添加区域代码和“美国”,结果仍然相同。当我打印出 get_lat_lon_from_address() 底部的错误代码时,它显示为 OVER_QUERY_LIMIT。但是,当我将链接复制并粘贴到浏览器中时,我从谷歌获取了 json 数据。我只发出 1 个地理编码请求,为什么会这样?
    猜你喜欢
    • 2013-04-05
    • 1970-01-01
    • 2013-12-18
    • 2013-10-05
    • 1970-01-01
    • 2012-10-25
    • 2012-12-11
    • 2012-06-08
    • 2011-09-27
    相关资源
    最近更新 更多