クライアント向けに Google マップを作成していますが、クライアントは、私がマップに既に追加したマーカーを検索できるようにしたいと考えています。
MySQL テーブルからマーカーを取得してマーカー配列にプッシュする V3 API マップを既に作成していますが、検索クエリに一致するものを一覧表示する検索ボックスの設定に苦労しています。
誰かがこれを経験したか、私を助けることができましたか?
クライアント向けに Google マップを作成していますが、クライアントは、私がマップに既に追加したマーカーを検索できるようにしたいと考えています。
MySQL テーブルからマーカーを取得してマーカー配列にプッシュする V3 API マップを既に作成していますが、検索クエリに一致するものを一覧表示する検索ボックスの設定に苦労しています。
誰かがこれを経験したか、私を助けることができましたか?
データベースから引き出された独自のピンのデータセットを維持し、独自のコードでそれらの検索を処理することによって、最適なサービスが提供されます。実装するには、そのデータセット内の各場所に対して作成しているピンへの参照を保存する必要があります。したがって、DB から場所を取得し、ローカルに保存し、それらをマップに追加し、作成されたピンへの参照でローカル データストアを更新し、検索をデータセットにフックし、最後にマップ ピンの中央に配置するか、または発生させたいことをすべて行います。その結果のために保存した参照。
この Google ウォークスルーは、このタイプのソリューションの概要です。 https://developers.google.com/maps/articles/phpsqlsearch_v3?csw=1#creating-the-table
次のリンクにアクセスする必要があると思います
https://developers.google.com/maps/documentation/javascript/places#place_search_requests
node.js バックエンド サーバーの場合、データベースにデータを既に登録している場合は、要素を見つけるためのソリューションを次に示します。
最初に、サフィックス /query を持つ URL 用の新しい POST 要求ハンドラーを作成しました。このハンドラーは、mysql データベース要求本文の JSON または配列を予期します。これは、緯度、経度、および距離の 3 つのパラメーターを指定します。次に、これらのパラメーターは変換され、ハンドラーに変数として格納されます。
次に、Query Builder 形式を使用して汎用の Mongoose Query を作成しました。この形式は、データベース内のすべてのユーザーのフィルター処理されていない検索に等しい汎用クエリ オブジェクトを確立することから始まります。
距離が指定されている場合、クエリ ビルダーは、クエリの座標 (緯度、経度) で指定された距離内にあるすべてのユーザーをフィルター処理する新しい検索条件を追加します。*
*ここでは、MongoDB の検索パラメーター $near と、それに関連付けられた maxDistance およびspherical プロパティを使用して、カバーする範囲を指定することもできます。ユーザーの入力 (マイル単位) を受け取り、それを MongoDB が期待する単位 (メートル単位) に変換するため、クエリ本文の距離に 1609.34 を掛けています。 (mongoDB ユーザーの場合)
最後に、球面を想定して距離を決定するように指定しています。平坦なユークリッド サーフェスではなく、地球上の距離を評価するため、これは重要です。
最後に、query.exec を使用して、Mongoose に最終的なクエリを実行するよう指示しました。クエリでエラーが発生しない場合、基準を満たすすべてのユーザーの JSON 出力が提供されます。
// 特定の一連のクエリ条件を満たすすべてのユーザーの JSON または配列レコードを取得します app.post('/query/', function(req, res){
// Grab all of the query parameters from the body.
var lat = req.body.latitude;
var long = req.body.longitude;
var distance = req.body.distance;
// Opens a generic Mongoose Query. Depending on the post body we will...
var query = User.find({});
// ...include filter by Max Distance (converting miles to meters)
if(distance){
// (optional)Using MongoDB's geospatial querying features. (Note how coordinates are set [long, lat]
query = query.where('location').near({ center: {type: 'Point', coordinates: [long, lat]}, OR Your own query to be specified here.
// Converting meters to miles(For mongoDB users). Specifying spherical geometry (for globe)
maxDistance: distance * 1609.34, spherical: true});
}
// ... Other queries will go here ...
// Execute Query and Return the Query Results
query.exec(function(err, users){
if(err)
res.send(err);
// If no errors, respond with a JSON of all users that meet the criteria or you can also enter the array number you want to pass.
res.json(users);
});
});
また、 geojsonについて読んだり、MEAN スタックを使用してこの Google マップ プロジェクトを参照したりすることもできます。