Codeigniter Google Maps API V3地理编码不起作用

最后发布: 2013-09-27 23:11:40


问题

我正在尝试使用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] =>数组([纬度] => 37.429 [经度] => -122.1519)[marker_1] =>数组([纬度] => 0 [经度] => 0))1

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

BIOSTALL的建议输出: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 + 圣诞老人+克拉拉县+%2C +加利福尼亚+美国与传感器=假地区= US

codeigniter google-maps google-maps-api-3 geocoding google-geocoder
回答

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

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

2)我相信你可以在地图上设置一个'region'参数。 尝试将此设置为“美国”。

3)如果它仍然无法正常工作,请尝试进入库并找到get_lat_lon_from_address()函数,然后输出URL请求的结果。

我希望有所帮助。 我将很快考虑添加调试模式,这应该有助于解决这样的问题。 如果有任何其他问题,让我知道:)

史蒂夫


回答

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