タグ: GoogleMaps を抽出しています。
Total: 63

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つ動かせばズレません。
▼追記 2010/9/11 03:00
ズレを取得していくのは、ズーム後にいまいちなのでやめ。
必要な時に、domから地図中心pxを取得して、それと、map.getCenter()からのpxを比較して、それをズレ値とする。かなりスッキリした。

var map

function initialize(){
var opts = {
  zoom: 15,
  center: new google.maps.LatLng(35.7,139.7),
};
map = new google.maps.Map(document.getElementById('map_canvas'), opts);

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 mapCreateMarker(ll){
   this.first = 1;
   this.ll_ = ll;
   this.setMap(map);
 }
 mapCreateMarker.prototype = new google.maps.OverlayView();
 mapCreateMarker.prototype.draw = function(){
    if(this.first){
      var px = this.getProjection().fromLatLngToDivPixel(this.ll_);
      var cx = $('#map_canvas').width()/2;
      var cy = $('#map_canvas').height()/2;
      var c = this.getProjection().fromLatLngToDivPixel(map.getCenter());
      var x = px.x + (cx-c.x);
      var y = px.y + (cy-c.y);
      var latlng = this.getProjection().fromDivPixelToLatLng(new google.maps.Point(x,y));
      createMarker(latlng); //関数createMarkerは省略
      this.first = null;
    }
  }
}

}
▼追記 2010/10/12 23:03
v3.2で直った。
SVも追加されたようだ。
▼追記 2011/3/8 22:03
v3.3からまたおかしい。
今度は、iPhoneやiPadのブラウザのスクロール量が悪さする。
地図を全画面で表示しているような使い方の時は、わからないけれど、スクロールした下の方に地図を出した場合に、クリックのポイントがズレ、ピンチイン・アウトで妙な位置に移動してしまう。

v3.2にして、様子見。google groupにフィードバックしておこう。

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の距離も求められるでしょう、きっと。

googlemaps v2 memo

ブログ | 2010/5/14 15:23
maptypeに、G_SATELLITE_3D_MAP
eventに、singlerightclick
iconに、transparent

GAdsManager

ブログ | 2010/2/28 20:27
GoogleMaps APIに、Adsenseを表示
function mapAds(){
 var adsID = 'pub-xxxxxxxxxxx'; //adsenseのid
 mapAds = new GAdsManager(map,adsID,{
  maxAdsOnMap: 3,
  style: 'adunit',
  channel: '0123456789' //チャネルのID番号(チャネル名じゃないよ)
 });
 mapAds.enable();
}
こんなコードで出せると思います。

[Googleの記事]
http://googlejapan.blogspot.com/2009/12/google-m...
http://adsense-ja.blogspot.com/2010/01/google-ma...

3日前くらいに、ポストマップに仕込んでみたのだけれど、なんというかなかなかすごいんじゃないかという数字が出てる。CPMで他のページの3倍くらい。

表示サンプル
http://postmap.org/map
(ログインしているとデフォルトで非表示なので、左側のチェックボックスをオンにすると確認できます)

マップコンテンツって、負荷の割にまったく報われないという状況だったと思うのだけれど、少し可能性がでてきたのではないかと思う。(Googleがプッシュしている時期で、単価が高いだけかもしれないけれど)

・・・
僕のHPづくりのスタンスは、趣味と言い張る気もないし、ビジネスなんて言っちゃう気もないという、中途半端な立ち位置を良しとしてやっているのだけれど、個人でそれなりに評価されるページをつくれば、それなりに自由を獲得できるみたいなところを示せたらいいなと、結構真面目に思っています。
まだまだ遠いけれど、そういうスタンスの個人がいたら、応援できるところまでいけたら楽しいな、と、そんなことも考えています。

ということで、今年はいろいろ模索しながら、頑張ってみるナリ。

9wash twitter geologリリース

ブログ | 2010/1/31 21:24
9wash twitter clientに、座標データをログ化するgeologを追加しました。

http://tw.9wash.com/geolog
http://tw.9wash.com/geolog/kuwatter

9washからの投稿は、自動geolog化されます。
他のクライアントからの投稿をログ化したい場合は、batchで追加してください。気ままなスパンでタイムラインを読みにいって更新します。
http://tw.9wash.com/batch

また、適当に
http://tw.9wash.com/geolog/ユーザー名
にアクセスした場合は、とりあえずそのユーザーの直近200投稿から座標付を探しにいき、データがあれば表示します。

・・・
そうそう、batch利用の場合、OAuthのアクセストークンなどを、サーバーに持たせています。(基本はCookieのみ)

Gmaps API v3の書き方が結構変わってきてる。

ブログ | 2009/12/22 05:03
あちこち動かなくなってるのではなかろうか。
iPhoneと9washでしか使っていないけれど。

近いうちにチェックしなければ。
http://code.google.com/intl/ja/apis/maps/documen...

なんとなく、v2の名称に揃える方向のように見えた。
最初からそうしてくれればいいのに。
▼追記 2009/12/23 22:04
ポストは直しました。

set_center,get_position,get_zoomなどが、
setCenter,getPosition,getZoom,setVisibleなどの馴染みある書き方に変わったのが主。

AdSense for Maps

ブログ | 2009/11/24 16:09
ここに
http://code.google.com/intl/ja/apis/maps/
そんなリンクがある。

けど、内容はない。Englishには、それ自体がないから、日本で近日中に実装されるサービスなんだろうか。座標連動型広告といった感じだろうか。
▼追記 2009/12/2 01:39

今日のiPhone

ブログ | 2009/6/25 00:03
ログインとログアウトを作った。
今のところ、ログインしても、特にできることはないけれど。

ポストと電話と塔。
http://postmap.org/i
http://www.telmap.net/i
http://tower.30maps.com/i

・・・
地図のズームイン/ズームアウトは、ボタンが欲しい気がする。ピンチイン/ピンチアウトは、APIだと挙動がスムーズでないので、何やってるのか分からなくなる。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Rottel内コンテンツ

ユーザー一覧

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