0

Biostall の Google Maps v3 API を使用して一連の住所をマッピングしようとしていますが、住所を入力しようとすると、生成される経度緯度が毎回 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']);

マーカー出力:

配列 ( [マーカー_0] => 配列 ( [緯度] => 37.429 [経度] => -122.1519 ) [マーカー_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+ Santa+Clara+County%2C+California+United+States&sensor=false®ion=US

4

2 に答える 2

1

PHP で OVER_QUERY_LIMIT を指定すると、IP がブロックされている可能性があります。特に、あまりにも多くのアドレスを試行した場合や、各リクエスト間で十分に待機していない場合. 各リクエストの間に一時停止を追加してみてください。ただし、ほとんどの場合、IP が再び解放されるまで待つか (非常に面倒です)、クライアント側の JavaScript を試すことができます。正確な理由はわかりませんが、リバース ジオコードはクライアント側と JavaScript でより適切に機能します。Google から有料サービスを取得したり、OpenStreetMap を使用したりすることもできます。

于 2013-09-28T17:13:13.027 に答える
1

私のライブラリをご利用いただきありがとうございます。いくつかの提案があります。

1) マーカー位置の末尾に「, United States」を追加してみてください。

2) マップ上で設定できる「地域」パラメーターがあると思います。これを「US」に設定してみてください。

3) それでもうまくいかない場合は、ライブラリにアクセスして get_lat_lon_from_address() 関数を見つけ、URL リクエストの結果を出力してみてください。

それが役立つことを願っています。このような問題に役立つデバッグ モードをすぐに追加することを考えています。他に質問があれば教えてください:)

スティーブ

于 2013-09-28T09:18:17.453 に答える