好きな場所にオブジェクト(数種類のマーカー)を設置出来ます。
JavaScriptだけでなくPHPとRDBMSを使用しています。
APIのアイデアと言う事ですので、アプリはちょっとまずいかな?
ここに晒す事で、滞りぎみのコーディングをすすめていきたいと思います。尻に火が着かないと進まない感じなんです。まずかったら消して下さい。
登録可能な主な項目は、
マーカー種類(3種類)とタイトル、リンクURL、画像(アップロードファイル)、説明文です。表示期限(1週間以内)や表示開始ズームレベルも設定可能ですが、まだ正しく機能はしません。
作成途中でもあり細かいチェック(アップロードファイルの種類、説明文内に含まれるタグ、リンクURLの正統性)はおこなっていません。ウィルスファイルなどがアップされる可能性もあります(怖)画像ファイルだけに制限するコードは入っているのですが、すり抜ける場合があるようです。
現在は登録のみが可能です。
編集・削除はまだ出来ませんので試す場合は慎重にお願いします。マーカーの表示期間を登録から1週間に制限しています。編集機能は、現在ポツポツと作成中です。
マーカーを登録するには、自動メール認証による登録が必要となっています。IDとパスワードを自動発行します。ログインすると入力テーブルと自分の登録したマーカー一覧が出ます。自動ログインの有効期間は1週間です。クッキーにより制御されています。手動によるログオフ可能です。
デバッグモードで動いていますので、ログイン中には、最下部にごちゃごちゃメッセージが出ます。
ついている機能としては、、、
表示するマーカーが増えるとかなり重くなるそうですので、ズームレベルと連動した中心座標からの距離+最大件数を制限して検索をしぼって表示するようにしています。
距離はおよそ500kmから800mまでを表示のズームレベルに合わせて可変させます。最大件数は現在80件です。
検索結果の足切りはなにを基準に行うべきか?中心からの距離?登録順?微妙な悩みです。
ページ表示の度にDBより検索して、PHPにてマーカーXMLファイルを作り出しています。現在はファイル名固定ですのでシビアな同時アクセスはまずいかもしれません(汗)これはセッション毎に別ファイルにするべきですね。そのうち対応したいと思います。現在は少しでも素早く処理するためにメモリファイル上に作成しています。
日本しか対象に考えていませんので、ズームレベルは12で抑制しています。ズームレベルによりスクロール範囲も制限したいのですが、JavaScriptはよく判りません...
スクロール制限がないのでアメリカでもヨーロッパにでも登録可能になっています。
表示マーカーの検索にはPHPスクリプトが動く事が必要です。「表示更新」ボタンを押さないと再検索しません。moveendイベントでの再検索も考えたのですが、移動が多いとサーバーが辛そうな為に断念しています。(P3)Celeron-1.4GHz,ADSL(up
1M)な自宅サーバーですいぢめないで下さい。
UIとしては最低かもしれません。こんなUIって有りでしょうか?
表示更新ボタンは、表示中心位置とズームレベルをクッキーに記録します。マーカー種別を制限する機能がついているように見えますが、まだ動作しません...
近接したマーカーを登録・表示する方法に悩んでいます。
マーカーの登録時に、そのマーカー表示を開始するズームレベルの登録出来るように準備はしていますが、表示ズームレベルにあわせマーカー間の距離を登録時に制限するのが良いのか?それとも最小縮尺で距離を決めるのがよいのか?
まったく同じ場所に登録を許可すべきか? 同じ座標に複数ってのは頭が痛い問題です。
みなさんに少しつついてもらうと、データも揃ってコーディングやデバッグする気になるかな?って虫の良い思いで投稿します。
> 恥ずかしながらプログラミングとかの事はよくわからないので、好燭㌍鋿蠅妨世Δ世韻砲覆辰討靴泙Δ�發靴譴泙擦鵑�...御容赦下燭気ぁ��
どぞどぞ
> 通常、属性情報はフキダシの中に表示されるのですが、同時にページ内の他の場所にも関連した情報を表示させることは出来るのでし燭腓Δ��
マップ外の領域なら、技術的にそれほど難しいことではありません。
ただ、KsGMapではちょっとこの辺りを複雑にしてしまったので直ぐに設置はできませんが、面白そうなので近いうちに対応します。
登録系のシステムも面白いですね。うちもやってみたいのですが、表示系部分だけでいっぱいいっぱいです。
> APIのアイデアと言う事ですので、アプリはちょっとまずいかな拭�
問題ノッシングだと思います。
> 画像ファイルだけに制限するコードは入っているのですが、すり抜ける場合があるようです。
PHPだと、簡易版判断として getimagesize関数
の戻り値の有無で画像か否かは分かりますよ(すでに実装してたらごめんなさい)。
> 検索結果の足切りはなにを基準に行うべきか?中心からの距離?登録順?微妙な悩みです。
いろいろ選べると便利ではないでしょうか?
よく行われているのが、現在のマップの範囲内ですね。
距離順は計算負荷が高いので、個人的にはあまりお勧めしませんが。
アクセスの多い順とかあると面白いかな?
(AJAXを使えば情報ウィンドウを開いた回数とかカウントできる?)
> ...ズームレベルによりスクロール範囲も制限したいのですが、
TXMap(一番上の投稿参照)で実装しています。
よかったら参考にして下さい。
移動後(moveendイベント)時に中央の座標を求めて指定範囲外だったら戻すようにしています。
> 近接したマーカーを登録・表示する方法に悩んでいます。
みんな悩むことですね。
私の場合は、近いマーカーは登録できないのではなくて、一緒に表示するようにしています。
観光地とかで、近くに登録できないと致命的なような気もしますし。
お互いがんばりましょう!!
なるほど、getimagesize()で大きさを取得しちゃえばサムネイル作れますね。現在はブラウザまかせで縮小表示させてます。でかいのが来ると困ったなぁと思ってました。mimeタイプも拾えるかな?
mime_content_type()が正しく動作しない環境なので困っていました。ゴソゴソしてみます。
> いろいろ選べると便利ではないでしょうか?
> よく行われているのが、現在のマップの範囲内ですね。
> 距離順は計算負荷が高いので、個人的にはあまりお勧めしませんが。
選べるよーにするには指定方法で悩みそうですので、却下(笑)
マップの範囲での検索は実装済み、足切り用並び順で困ってます。距離での計算負荷はやっぱり高いですか?やっぱ、PostGISが必要かな?
> アクセスの多い順とかあると面白いかな?
> (AJAXを使えば情報ウィンドウを開いた回数とかカウントできる?)
情報ウィンドウを開いた回数...ログをDBにとれるかなぁ?
ちと、辛そうですね。他が完成したら検討してみます。
> 観光地とかで、近くに登録できないと致命的なような気もしますし。
同じ建物の別フロアなどを想定すると、やはり入れ子にしないといけないですね。でも、とっても辛そうです。情報ウィンドウに登録する情報を登録者が作ったXMLファイルに...登録者にそんな負荷をかけるか?>自分(大笑
2Dで良いと思ってましたが、現実は3Dって事だ。表現方法と実装に対する大きな課題ですね。
> お互いがんばりましょう!!
遊びが苦しみになってはいけないので、ボチボチとやります♪
ありがとうございました。
タクシー料金マップ
http://www.movies.ne.jp/theatermap/lab01.html
2点間の距離からおよその料金を算出します。
本当は実際の距離を測りたいのですが、不可能なので、実際の距離を直線距離の1.4倍~2.0倍の係数をもって見積もっています。
一応、私の良く乗る区間では概ね正しい料金になっていますが、どうでしょうか?
料金システムも都道府県などによって違うので、ローカルな地図にしか使えないかも知れません。
場所によって前述の係数の値も変えられるといいかも。
基準点を複数箇所、設定することは出来るのですか?
いろいろなことに使えると思います。
アメリカのGoogle Maps の経路探索はこんな感じですが、
http://maps.google.com/maps?q=jfk+to+350+5th+ave,+new+york&ll=40.725925,-73.893356&spn=0.189335,0.219830&hl=en
これをコントロールする機能は Google Maps API では公開されてますか?
APIのドキュメントをざっと見たところ、関係ありそうなのは
GSmallZoomControl – a small zoom control (no panning controls) used
in the small map blowup windows used to display driving directions
steps on Google Maps
くらいしか見当たりませんでしたが、やっぱり公開せずに、Google Maps の
機能にとどめるんでしょうかね・・・ これがコントロールできたらすごい大きい差別化になるだろうし
いろんなアプリができると思うんだけどなあ・・・
マーカー間の最短経路を検索して、線を引きます。
(マーカーでなくて任意の点でもできますが、テスト版につき簡単にしてます)
計算方法があることは知っていたのですが、テストしてみると遅いこと遅いこと。
ほぼ総当りのような事をしているので、まだまだ工夫が必要です。
あと、データ量が必然的に多くなるので、クライアントサイドで実現するのはちと酷かも知れません。
ただ、技術的には可能と分かったので、短距離(市区くらい?)なら個人でも実現できると思います。
あと、データですね。利用規約に1人30箇所以上登録とか設けるとか?
前回の最短経路検索付きマップの応用です。
アルゴリズムをJavaScriptに合わせて速度をかなり向上させました。日本全国の駅はちょっと無理かも知れませんが、近隣の県くらいの範囲ならカバーできると思います。
ポータルサイトなどによくある路線検索のように時刻表を参照に最適化した路線を出しているわけではなくて、単に区間の時間の和が一番短いのを選択するようにしています。
とりあえず、東京23区内のJRのみですが、ラボの段階でもっと増やす予定です。
ただ、Googleマップは地下鉄が見られないのが辛いですね。JRの地下に潜っている2つの駅を探すだけでもちょっと大変でした。
路線データは、区間所要時間さえ分かれば難しくないです。
今回はツール自体の自動化もしたので、割と楽にできました。
路線の上をポリラインを引くのは結構楽しかったりします。
>・・・ 処理時間燭燭辰燭��恭逑繝(ミリセカンド)でした。
処理時間はデータ数が増えると相乗的に増えるのでちょっと怖いです。
東京には900個くらい駅があるらいいので、まずはそれに耐えられるのが目標です。
>地下鉄は既存の路線図と重ね合わせてとレースするしかないでしょうね・・・
「Google Maps
で選挙区マップ。注目の激戦区も」で紹介なされていた、Tphoto
が使えるかも知れませんね。とりあえず、紙媒体の地図も買いに行ってきます。