iPhone, Googlemaps api3, clickした座標

2010/8/30 16:56
これが、地図スクロールした分、ずれるじゃないか。
#9washでマーカーを追加する時に、変な位置に置かれてしまうことがある理由もこれか...。

google.maps.event.addListener(map,'click',function(res){
 alert(res.latLng.toUrlValue())
});
▼追記 2010/8/31 02:21
動かしたpixelを保存していって、iOS4の時だけclickした座標を補正して処理。

var map

function initialize(){
 var opts = {
   zoom: 15,
   center: new google.maps.LatLng(35.7,139.7),
   disableDoubleClickZoom: true, //これがないと挙動はまだ怪しい
   scrollwheel:false //trueで検証してない
 };
 map = new google.maps.Map(document.getElementById('map_canvas'), opts);
 
 MAP_FIRST = 1;
 if(navigator.userAgent.match(/iPhone OS 4/i)){
   google.maps.event.addListener(map,'tilesloaded',function(){
     if(MAP_FIRST){
       new mapZureSave();
       MAP_FIRST = null;
     }
   });
 }
 
 google.maps.event.addListener(map,'click',function(res){
   if(navigator.userAgent.match(/iPhone OS 4/i)){
     new mapCreateMarker(res.latLng);
   }else{
     createMarker(res.latLng); //関数createMarkerは省略
   }
 });
}


if(navigator.userAgent.match(/iPhone OS 4/i)){
 function mapZureSave(){
   MAP_ZURE = [0,0];
   this.start_ll = map.getCenter();
   this.setMap(map);
 }
 mapZureSave.prototype = new google.maps.OverlayView();
 mapZureSave.prototype.draw = function(){
   this.start_px = this.getProjection().fromLatLngToContainerPixel(this.start_ll);
   var THIS = this;
   google.maps.event.addListener(map,'bounds_changed',function(){
     var px = THIS.getProjection().fromLatLngToContainerPixel(THIS.start_ll);
     var x = px.x - THIS.start_px.x;
     var y = px.y - THIS.start_px.y;
     MAP_ZURE = [x,y];
   });
 }
 
 function mapCreateMarker(ll){
   this.first = 1;
   this.ll_ = ll;
   this.setMap(map);
 }
 mapCreateMarker.prototype = new google.maps.OverlayView();
 mapCreateMarker.prototype.draw = function(){
   var px = this.getProjection().fromLatLngToDivPixel(this.ll_);
   if(MAP_ZURE){
     var x = px.x + MAP_ZURE[0];
     var y = px.y + MAP_ZURE[1];
     var latlng = this.getProjection().fromDivPixelToLatLng(new google.maps.Point(x,y));
     if(this.first){
       createMarker(latlng); //関数createMarkerは省略
       this.first = null;
     }
   }
 }
}
▼追記 2010/9/1 01:17
これ、ズーム値を1つだけ動かした時は、ズレます。2つ動かせばズレません。

先日、baiduから

2010/8/27 01:09
検索ロボットを拒否しないでいただけませんか。クロール頻度は相談させて下さい。
といったメールが届いた。地道な努力しているんですね。
少し好感を持ったけれど、サイト名が間違っていたので、流してしまった。

で、久しぶりにbaiduを見てみた。
baiduならnaverの方が、オリジナリティがあって好感が持てる。

それにしても、naverすごいなあ。ブックマークバーのY!と入れ変えよう。

小豆島

2010/8/25 15:47
行きの新幹線と宿だけは予約して出発。
姫路からフェリーに乗るので、とりあえず姫路城へ。今年は改修の年らしく、クレーンと足場で少し残念。汗だくで残念がる余裕もなかったけれど。
脇の好古園にてあなご丼を食べて、バスで姫路港へ。

で、小豆島。福田港からバスで宿へ。バスの運転手さんが、近いところで降ろしてくれて少し助かる。

1日くらいレンタカーを借りようと電話するも空きがない。そりゃそうか。事前に予約しとくべきだった。小豆島にレンタカー会社は、土庄港の方に3つ。

ということで、バスで観光。
草壁港からタクシーで寒霞渓へ(時間が合えば乗り合いタクシーがある。バスは倒産したらしい)。ロープウェイで上って、瓦を投げて、石門洞サイドを歩いて降りる。すごく暑いので、歩いて降りてる人は皆無。木陰の石畳を降りるから、それほどキツくはないのだけれど。
乗り合いタクシーを止めて、草壁港へ戻る。因にタクシーは2200円くらい、乗り合いは350円。

で、醤油の方へ移動。
ひしお丼なるものを食べる予定だったのだけれど、食事できそうなところは皆無。少し歩いて、タクシーで映画村へ。運転手曰く、醤油をかければなんでもひしお丼ということらしい。映画村でソーメンを食べて、渡し船でオリーブ園の方へ(10分)。

オリーブ園はスルーして、バスで土庄港へ向かい、カドヤ見学。ごま油もらう。
で、北回りのバスで帰る。

三日目は、土庄港で自転車を借りて、エンジェルロードを往復して、うどんとビールを食し、土庄東港に行き、高速船で女木島に渡り、洞窟に入って、芸術祭関連の民家でビールを飲んで、再び小豆島へ戻る。ああ忙しい。

土庄東港は、とてもよかった。おそらく定期船がない小さな港。
平屋のターミナル。船員らしいおじさんと、喫茶店の主人がポツンと正面に置かれたテレビで高校野球の決勝戦を見ている(もう13点入ってた)。島に求めていた時間は、こんな感じなんじゃないかと、そこで思った。

で、翌日チェックアウト。
岡山から帰ろうかと思っていたのだけれど、岡山をぶらつく気力はなかったので、やっぱり姫路ルートで。島から6時間くらいで帰宅。
ちなみに、小豆島への最短は、高松まで飛行機で飛んで、高速船のようです。島で誰かが言ってました。

新幹線に乗ってて思うのだけれど、関西拠点の方がアクティブになれそうな気がします。気がするだけ。

勇気を出して、ヘソ掃除

2010/8/24 23:44
小さい時にヘソを触って激痛が走って以来、放置していたのですが、もうおっさんだし、休暇中だし、トライしてみました。
綿棒に消毒液をつけて恐る恐る。

ということで、そこそこヘソの奇麗なおっさんになりました。

2点間の距離 (GoogleMaps API3用に)

2010/8/17 18:46
api2だと、polylineの長さはgetLength()で取れるのだけれど、api3で見当たらない。
なので、以前PHPで書いたものから、Javascriptへ移植。1000km離れて1mも違わないから、きっとそんなに間違ってないのではないかと思われます。

function getPointsDistance(a,b){
 var pi = Math.PI;
 var lat1 = a.lat()*pi/180;
 var lng1 = a.lng()*pi/180;
 var lat2 = b.lat()*pi/180;
 var lng2 = b.lng()*pi/180;
 var deg = Math.sin(lat1)*Math.sin(lat2) + Math.cos(lat1)*Math.cos(lat2)*Math.cos(lng2-lng1);
 return 6378140*(Math.atan2(-deg,Math.sqrt(-deg*deg+1))+pi/2);
}

//確認
alert(getPointsDistance(new google.maps.LatLng(35.186225,136.898961),new google.maps.LatLng(43.133061,142.822265)));

これを使えばpolylineの距離も求められるでしょう、きっと。

リリースしとこ。9wash: 楽天トラベル マップサーチ

2010/8/17 01:00
9wash: 楽天トラベル マップサーチ
http://rt.9wash.com/

誰も話題にしなくなったAPIでサイトをつくっていこうプロジェクトの第一弾ということで、作ってみました。

稀に旅行に行く時に、楽天トラベルのお世話になるのですが、地図からの検索がどこにあるのか分からず、どうも不便なのです。地図で当たりをつけてから検討したいのですが。
というのが動機です。

そんなサイトもあるだろうということで、
http://travel.rakuten.co.jp/webservice/
を見ると、下記があります。Flashで多機能です。
地図で宿探し
http://www.chizuyado.com/


9wash: 楽天トラベル マップサーチは、
複数のポイントを指定できるあたりがウリです。シンプルな2カラムで、手っ取り早く当たりをつけられるのではないかと思います。

ヘルプ画像も用意したので、最初はトップページから開いてみて下さい。

・・・
内部的には、ほぼJavascriptです。JSONPで読み込むので、僕のサーバーにはとてもやさしいです。

30mapsとのbookmarkletでの連携など、もう少し手をいれていく予定です。

ということで、よろしくお願いします。

・・・
リクエストなどは、ここのコメントか、@kuwatter か #rt9wash にて。
▼追記 2010/8/18 01:22
楽天トラベルに、こういうページはあった。
http://web.travel.rakuten.co.jp/portal/my/rt_map...

Google検索から辿りついたのだけれど...
▼追記 2010/8/25 10:39
アクセスがないじゃないか!
これはいけん。
lab以下にしておけばよかった。

今日は、30mapsのbookmarkletを移動したりしよう。
▼追記 2010/8/27 00:42
お、アクセスが一桁から二桁になった。
これを倍増と呼ぶ。

jsだからmixiアプリにでもしてみるかな。最近は、ソーシャル要素がないと許可されないんだっけかな。あー、その前に地図がopensocial上で動くんだろうかという調査も必要か。v3なら動きそうな気もするけれど。
▼追記 2010/8/28 17:39
ガーン! またアクセスがない...
ひとり開発合宿の野望もはかなく消えたな。
前 | 1 | 2 | 3 | 4 | 5 | 6 | ..... | 227 | 228 |

Rottel内コンテンツ

アーカイブ
コメント
ツイッカー
アンケート
デイリーRottel
ブログ
写真
フィードバック
ブックマーク
マップ
タグ
手当たり次第

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close