たたみラボ

  • about
  • member
  • r&d
  • blog
  • tatamicast

blog

RSS

Yahoo!地図情報WebサービスとGoogleMapsAPIを比べてみる

icon December 15, 2006 11:45 AM by funami このエントリーを含むはてなブックマーク

フナミタカオです。
昨日公開された、Yahoo!地図情報Webサービスですが、まずは、Googleと地図がどのくらい違うのかを見ることができるサンプルを作りました。


http://tatamilab.jp/~funami/yahoo/y_vs_g_map.html
・ジオコーディング(地名検索)して、見つかったら、その場所を表示する。
・縮尺をだいたい同じにして、地図と、航空写真をみることができる。
といったことが試せます。
・スクロールの同期にも対応しました。

はまりどころ(1) YEventType

Yahoo!のほうは、リファレンスが日本語なのはありがたいのですが、ソースのサンプルがないので、ちょっとはまるところもありました。
_map = new YahooMapsCtrl("ymap", w2j(point), 4); _map.setVisibleSliderbar(true);

   //YEventType.が必要!
_map.addEvent(YEventType.LAYER_CHANGED, function() {
   showInfo();
   });


ひとつが、こちらのイベント指定時の引数。
http://tatamilab.jp/mt/mt.cgi?__mode=view&_type=entry&blog_id=1
新規エントリー | エントリー | たたみラボ_blog | Movable Type Publishing Platform
_map.addEventの第一引数に、イベントを指定します。、リファレンスにも、イベントの一覧があるのですが、

_map.addEvent(LAYER_CHANGED, function() {
   showInfo();
   });

このように、ただ、LAYER_CHANGEDとだけかくと、そんな定数はないよってエラーになります。
で、文字列?とおもって ”LAYER_CHANGED” のように、ダブルクオーテーションつけるも動かなかったです。
実は、YEventType.LAYER_CHANGEDが正解です。
当然なのですが、クラス名もないとだめです。
でも、サンプルなしだと気がつかないこともありますよね。

はまりどころ(2)YLLPoint.latはメソッドではない

GoogleMapsで、緯度経度をあらわすには、GLatLngクラスを使いますが、lat,lngを取り出すにはメソッド使いますが

var point = new GLatLng(10,10); var lat = point.lat();

Yahoo!地図情報の場合は、メソッドではなくて、アトリビュートなので、括弧はいりません。


var point = new YLLPoint(10,10);
var lat = point.lat;

しかも、経度は google => lng ,Yahoo => lon と微妙に違うので気をつけましょう。

GMapsのZoomはY!ではLayerと呼ぶ

呼び方はともかく、Googleは数が大きくなるほど、詳細になるのですが、Yahoo!は逆で、小さいほうが詳しくなります。 縮尺のきり方が違うので、完全に同サイズで比較することは難しいのですが、 、Yahoo!地図情報と、GoogleMapsの地図を比較してみようで試してみてください。


同じようなこと、みなさん思いつきますよね


コメントもいただきました。どうもありがとうございます。

双子地図 (Google Maps API + Yahoo!地図情報Webサービス
futago.jpg

Google Map と Yahoo! Mapを比べてみよう! 双方ドラックするとお互い同期します。
hi.jpg


関連記事


ヤフー、「Yahoo!地図情報」のAPIを公開--マッシュアップサイトの構築可能に
ヤフー、「Yahoo!地図情報」のAPIを公開--マッシュアップサイトの構築可能に

COMMENTS

このへんでも似たような比較?があるようですね。

http://www.nilab.info/zurazure2/archives/000441.html

December 15, 2006 4:41 PM by 匿名  

Mozilla1.8b を使っていますが、

[lat,lng] = j2w(_map.getCenter());

の行でエラーが発生するようです。
このような記法に対応してないのかもしれません。
ご参考まで。

December 15, 2006 10:44 PM by えろぺお  

えろぺおさん、どうもご指摘ありがとうございます。
ご指摘のとおり、これ、Javascript的には、ぜんぜんだめでした。IE6でも動きません
配列で直接戻すのじゃなくて、ハッシュで戻すように修正しました。
最近Rubyなのもので、つい、Ruby風になっちゃにました。
これで、うごいちゃう、FireFox2.0もすごいのですが...

どうもありがとうございました。
で、もし、IEでみて、いけてないじゃんと思っていた皆様。再度みてみていください。
よろしくお願いいたします。

December 18, 2006 5:31 PM by フナミタカオ  

POST COMMENT




(書式を変更するような一部のHTMLタグを使うことができます)

必ず利用規約に同意いただいた上で送信ください。

ページトップへ



(C) RECRUIT MEDIA COMMUNICATIONS CO., LTD.