私のウェブサイトには地元企業のデータベースがあります。
基本的に、ユーザーが住所と「最大距離」フィルターを入力して、住所からの最大距離内の結果のみを返す機能を追加する必要があります。
どのライブラリ/プログラム/api/に必要な機能がありますか?
Google マップ API を調査しましたが、距離行列計算の割り当てが 1 日あたり 2500 要素と非常に制限されていることを考えると、実現可能ではありません。
私のウェブサイトには地元企業のデータベースがあります。
基本的に、ユーザーが住所と「最大距離」フィルターを入力して、住所からの最大距離内の結果のみを返す機能を追加する必要があります。
どのライブラリ/プログラム/api/に必要な機能がありますか?
Google マップ API を調査しましたが、距離行列計算の割り当てが 1 日あたり 2500 要素と非常に制限されていることを考えると、実現可能ではありません。
データベースの「空間」機能を使用する必要があります。データベース サーバーがサポートしていない場合は、「空間」プラグインを探してみてください。mySql で可能かどうかはわかりません。SQL Server と PostGIS を使用。
たとえば、データベースが SQL Server 2008 の場合:
住所テーブルに「geography」フィールドを追加し、各ローカル ビジネスの地理座標 (緯度、経度) を含むポイントを追加します。
INSERT INTO @addressTable (GeographyColumn) VALUES (geography:STGeomFromText('POINT(longitude,latitude)' , 4326))
(値 4326 は WGS84 座標系 (GPS で使用される) を意味します)
次に、クエリを実行するときに、クライアントの座標を使用してオブジェクトを作成します。
DECLARE @client geography
SET @client = geography::STPointFromText('POINT (longitude, latitude)', 4326)
SELECT *
FROM addressTable
ORDER BY Location.STDistance(@client)
両方の住所の latLong を取得できます (Google マップ API の geoCoding を使用)。その後、それらを mysql クエリと比較できます。このGoogle 検索ページ
を
チェックして、指定された距離または距離ルックアップ内でポイントする方法に関する Stack Exchange の質問のリストを確認してください。