0

我正在尝试使用 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

这是制作的地图: 地图制作

BISTALL 的建议输出如下: Lat: 0 Lng: 0 Err: OVER_QUERY_LIMIT data_location: 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®ion=US

4

2 回答 2

1

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

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

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

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

我希望这会有所帮助。我将考虑尽快添加一个调试模式,这应该有助于解决此类问题。让我知道是否还有其他问题:)

史蒂夫

于 2013-09-28T09:18:17.453 回答
1

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

于 2013-09-28T17:13:13.027 回答