5

ユーザーが入力したアドレスに基づいてBingアドレスの提案を返すこの関数があります。すでにuserLocationを指定していますが、結果は私が想像するほど正確ではありません。ここでやるべきことはありますか?必要に応じて、州または郵便番号を手動で指定できますが、後処理は避けたいと思います。

たとえば、111と入力すると、111、NY、111スウェーデン、111デンマークの結果が返されます。これを少なくとも米国だけに制限したいと思います。実際には、ハードコーディングできるいくつかの州内でのみです。データでpostalCodeのオプションを手動で指定すると、クエリで使用したものが上書きされます。

    var geolocate = function(options) {
    $.ajax({
        url: "http://dev.virtualearth.net/REST/v1/Locations",
        dataType: "jsonp",
        data: {
            key: "KEY",
            q: options.address,
            userLocation: options.latitude + ',' + options.longitude,
            maxResults: options.maxResults,
        },
        jsonp: "jsonp",
        success: function(data) {
            if (options.success instanceof Function) {
                options.success(data);
            }
        },
        error: function(xhr, status, text) {
            alert('ERROR:\n');
        }
    });
};
4

2 に答える 2

1

結局のところ、これは実際には意図したとおりに機能します(テストで別の方法が証明されない限り)アドレスを単一のパラメーターqとして指定していましたが、addressLineをuserLocationと組み合わせて指定すると、期待どおりに結果がフィルター処理されます。

var geolocate = function(options) {
    $.ajax({
        url: "http://dev.virtualearth.net/REST/v1/Locations",
        dataType: "jsonp",
        data: {
            key: "KEY",
            addressLine: options.address,
            countryRegion: 'US',
            userLocation: options.latitude + ',' + options.longitude,
            maxResults: options.maxResults,
        },
        jsonp: "jsonp",
        success: function(data) {
            if (options.success instanceof Function) {
                options.success(data);
            }
        },
        error: function(xhr, status, text) {
            alert('ERROR:\n\n');
        }
    });
};
于 2012-12-26T20:29:50.523 に答える
0

しばらく前に行ったいくつかの調整を超えて、Bing Maps APIにあまり精通していません...しかし、IPを渡すか、ローカリティを含めてみましたか?都市名を取得するには、ユーザーのLat / Lngを逆引きする必要があるかもしれません...しかし、userLocationからその情報を推定しない理由は私を超えています。

http://msdn.microsoft.com/en-us/library/ff701714.aspx

于 2012-12-26T15:51:09.187 に答える