GoogleMaps : してログ

GeolocationAPI で検索して出てくるサンプルで多いのが、getCurrentPosition を使った一発取得のものです。しかし、実際これで構築してみると位置情報の精度が悪く(特に Android 系は)使い物になりません。これは、初回に返してくる位置情報の精度が悪いためのようで、enableHighAccuracy を true に指定してもあまり改善しないようです。

実際に GeolocationAPI を使ってアプリケーションを構築する際は、watchPosition を使って緯度経度の取得を繰り返し、精度が落ち着くのを待ってから利用するようにするのが良いです。何を以て落ち着いたと判断するかは悩むところですが、「十分な精度になったらボタンを押して下さい」などとサイト利用者に委ねるか、緯度経度の誤差が 10m を下回ったときに自動投稿する、あるいは5回目の取得時の緯度経度を採用するなどが考えられます。

解説サイトはたくさんありますが、マニュアル的なものしかなく、実装する際は注意が必要です。

  • getCurrentPosition が返す位置情報は精度が悪いことが多い
  • enableHighAccuracy は効いているかあやしい
実装例:watchPosition
GeolocationAPI watchPosition サンプル(Googleマップ版)

Google Maps API V3 のマーカーに追加になった、size と origin を使うと、大きい画像の一部分をアイコン画像として使うことができるようです。メリットとしては、サーバーとの通信を減らし読み込み時間を改善できる、ということなのでしょう。

昨日の Boeing 747 flight! に、上のような画像を用意して試してみました。例えば、赤いマークされたアイコンを表示するには、下記のようにします。

var mkr_plane = new google.maps.Marker({
	position: new google.maps.LatLng(37.954075, 139.113039),
	icon: new google.maps.MarkerImage("B747-400-99.png",
		new google.maps.Size(99, 99), // Size
		new google.maps.Point(189,99), // Origin
		new google.maps.Point(50, 50)), // Anchor
});

ちなみに、変更前はマーカーイメージ画像そのものを入れ替えてアニメーションさせていました。この方法を使った結果、チラツキがまったく無くなり非常にイイ感じです。

Boeing 747 flight!

GoogleMaps 201314

Google Maps V3 で少し遊んでみました。ボーイング747が Google マップ上を飛行するだけのものです。九州あたりを離陸した飛行機は新潟空港へ向かいます。目的地のマーカーはドラッグでき、移動させればどこへでも飛んで行くことができます。

Boeing 747 flight! (Google Maps)

久しぶりに算数をしたので、あんまりスマートな書き方にはできませんでした。加速度を入れていないので、旋回しても速度は落ちず常に一定の速度で飛行します。あと、日付変更線の付近をまたぐと、遠い反対側へ向かおうとしてしまいます。

このB747のイメージは、HDD の整理をしていて見つけたもので、今回は15°毎に回転イメージを作ってみました。もう少し細かくしても良かったかも知れません。

そろそろ IE6 サポートしなくていいってならんかねー。
今日も他じゃ動くのに IE6 だけだめってのあって無駄にした数時間。あ〜あ勿体無い。

Google Maps API v3 で単純な地図インターフェイスを実装なんだけど、連想配列の最後のカンマひとつ多いだけな単純ミスを、えらい苦労して突き止めたところです。

var myOptions = {
zoom: 6,
center: new google.maps.LatLng(37,138),
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true,
};

この true の後ろのカンマ。
PHP とかだと付いてても無視してくれるんだが、IE6 だと素っ頓狂な行目を差して「オブジェクトがありません」とか言うもんだから、「API 読み込めてないんかな?」などと見当違いな場所を調べてみたり、v3 の IE6 対応を疑ってみたり。カンマ一個のために何時間使ったんだか。。。

一応、表示されるようになったし、機能的には問題なさげなんだけど、コントロールの位置が重なってたり、ちょっとオカシなところもあるようだ。しかし、良くできてる Google さんには頭が下がります。

※この記事は「Yahoo!ブログ - HDRp」からの転載です