代码之家  ›  专栏  ›  技术社区  ›  Jimmathy

Codeigniter谷歌地图API V3地理编码不工作

  •  0
  • Jimmathy  · 技术社区  · 11 年前

    我正试图使用Biostall的谷歌地图v3 API来绘制一系列地址,但当我尝试输入地址时,每次生成的Lon-Lat都是0,0。只有当我特别输入每个地址的经度和纬度时,它才有效。即使是Biostall在他的示例视频和文档中使用的条目也不起作用。我也在尝试使用地理编码缓存功能,请帮忙。

    $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[经度]=&t;-122.1519)[marker_1]=>数组([纬度]=>0[经度]=<0))1

    这是制作的地图: Map Produced

    BIOSTALL的建议输出如下: 纬度:0 长度:0 错误:OVER_QUERY_LIMIT 数据位置(_L): 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

    2 回复  |  直到 11 年前
        1
  •  1
  •   BIOSTALL    11 年前

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

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

    2) 我相信你可以在地图上设置一个“区域”参数。请尝试将此设置为“US”。

    3) 如果仍然不起作用,请尝试进入库并找到get_lat_lon_from_address()函数,然后输出URL请求的结果。

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

    史蒂夫

        2
  •  1
  •   Cybercartel    11 年前

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