質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.13%

GoogleMapでマーカーを読み込みたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,779
退会済みユーザー

退会済みユーザー

いつもお世話になっています。

GoogleMap上に複数マーカーを表示しています。
マーカー情報はjsonで外部ファイルに保存しています。
例)
["東京駅","35.68121314194681","139.76600646972656"],
["有楽町駅","35.67486854197016","139.7625732421875"])

例えばコンビニのマーカー情報を1万件外部ファイルに格納していたとして、
一気に全部表示するのはちょっと馬鹿らしいな、と思ったので、
クリックした座標を中心としてnkm圏内のマーカーを読み込めたら一番良いのですが、
どう指定して読み込んだら良いのか思いつくことが出来ませんでした。

クリックした座標が
LAT    35.674066715962134
LNG    139.76720809936523
だったとして、そこのnkm圏内、あるいは直近n件のデータを抜き出して表示、と言うのは、どうやれば良いんでしょうか?
クリック座標を取得する方法は承知しています。

宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

 位置情報を格納できるDBに入れてクエリで処理

【第5回 位置情報を保存しよう(前編):位置情報サービスのはじめ方|gihyo.jp … 技術評論社】
http://gihyo.jp/dev/feature/01/location-based-services/0005

【MySQLのgeometry型で○km以内の場所を取得してみました - Qiita】
http://qiita.com/mitani/items/6909406ac4fe0db2d35c

【mysql空間テーブルの作り方 - Qiita】
http://qiita.com/kochizufan/items/a68b30ba74849483f75c


 タイル番号ごとにJSONファイルを作成

タイルを使うというより「タイルの範囲内のデータ」というJSONをある程度のくくりごとに作ることで1回に読む量を減らす作戦。

【TrailNote : 座標の変換(世界座標、ピクセル座標、タイル座標、緯度・経度)】
http://www.trail-note.net/tech/coordinate/

【地図タイルについて - smellman's Broken Diary】
http://smellman.hatenablog.com/entry/2015/12/26/054520


 JSONを毎回走査し、現在表示されているエリア以内かどうかを判定する

// こういう判定関数を作って処理するか、
/*
左端X座標 ≦ 地点X座標 ≦ 右端X座標
上端Y座標 ≦ 地点Y座標 ≦ 下端Y座標
*/
// LatLngBounds class で「描画領域に入っているか」を判定するとか。
if ( map.getBounds().contains( {lat: -34, lng: 151} ) ) { /* 地点が領域の中にある */ }

下記例はPHPを使っていますがそれをJavaScriptだけで行う感じ。

【地図の表示領域にあるマーカーだけを動的に読み込んで表示 - Let's make something】
http://pinoyuki.hatenablog.com/entry/2012/04/03/003141

【Google Maps JavaScript API V3 Reference  |  Google Maps JavaScript API  |  Google Developers】
https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/16 01:27

    詳しい情報ありがとうございました!
    思いつかない方法ばかりで関心ばかりです……上から順にみっちり勉強したいと思います。
    解決方法として多角的に情報いただけましたのは大変助かりました。

    キャンセル

+1

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/16 01:23

    類似質問の提示ありがとうございました。見付け切れなかったので助かりました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る