0

わかりましたので、住所または緯度/経度の組み合わせを取り、ここで結果を参照することを提案する、機能する (ほぼ) ジオコーダーを構築しました。

$(this).autocomplete({

        source:function (request, response) {

            if (geocoder == null) {
                geocoder = new google.maps.Geocoder();
            }
            geocoder.geocode({'address':request.term }, function (results, status) {

                if (status == google.maps.GeocoderStatus.OK) {
                    var searchLoc = results[0].geometry.location;
                    var lat = results[0].geometry.location.lat();
                    var lng = results[0].geometry.location.lng();
                    var latlng = new google.maps.LatLng(lat, lng);
                    var bounds = results[0].geometry.bounds;

                    geocoder.geocode({'latLng':latlng}, function (results1, status1) {
                        if (status1 == google.maps.GeocoderStatus.OK) {
                            if (results1[1]) {
                                response($.map(results1, function (loc) {
                                    return {
                                        label:loc.formatted_address,
                                        lat:lat,
                                        lng:lng,
                                        value:loc.formatted_address,
                                        bounds:loc.geometry.bounds
                                    }
                                }));
                            }
                        }
                    });
                }
            });
        },

90% の確率で問題なく動作します。ただし、ポップダウン リストに返される最初の項目がクリックできない場合があることに気付きました。変数のログを設定しましたが、場合によってはまたはstatusであることに気付きました。どちらの場合も、リストに値がロードされ、リストのすべてが最初のものを除いて選択可能になります。可能な解決策のアイデアはありますか?ZERO_RESULTQUERY_LIMIT_REACHED

4

1 に答える 1

0

boundsAPIによって省略されたため、コードでとして定義されているインスタンスがあったようundefinedです。これにより、コードのさらに下でjavascriptの問題が発生し、条件が満たされなくなりました。これはマップを適切にフレーム化するためにも必要ないようです、そして私は私の問題を解決しました...

于 2013-03-20T20:26:05.297 に答える