トップ «前の日記(2007-05-19) 最新 次の日記(2007-05-22)» 編集

十日日記


2007-05-20

Link Google Maps API 2.3で少しずれる

1年ぶりにGoogle Maps APIを使ってみることにした。前はKsGMapを利用したのだが、もはや内容を忘れている。調査の段階からやり直すことにした。PHPでのラッパーとして「GoogleMapAPI-2.3」というものがあったので、今度はそれを使わせてもらう。

GoogleMapAPI.class.phpの使用例を覗いてみると、「addMarkerByAddress」という関数がある。これは住所を引数にとって位置情報を得るもので、こういうのをGeocode変換というらしい。幸いにも、一時中止など紆余曲折を経て2006年12月から日本国内の変換もGoogleで行なえるようになった。

function getGeocode($address) {
    if(empty($address))
        return false;

    $_geocode = false;

    if(($_geocode = $this->getCache($address)) === false) {
        if(($_geocode = $this->geoGetCoords($address)) !== false) {
            $this->putCache($address, $_geocode['lon'], $_geocode['lat']);
        }
    }

    return $_geocode;
}

上にあるとおり、GoogleMapAPI.class.phpでは、まずキャッシュに問い合わせるようになっている。このキャッシュはMySQLで保存されていて、キャッシュにデータが存在していなければGoogle(ないしはYahoo!)を使って位置情報を取得し、putCacheでMySQLに格納する。UTF-8ではなくEUC-JPを使っている場合には、この関数を変更することになるだろう。

地図のズレさて、私が未だに理解できない現象は、このキャッシュ機能を有効にした場合に発生する。どういうわけか、キャッシュが存在するときには西南西方向へ数メートル位置がずれて表示されてしまうのだ。図でいうと、右側がキャッシュなしの場合の位置情報、左側がキャッシュから拾った位置情報である。データベースからデータを拾ってGoogle Mapで表示させると左側を指すので、位置情報を取得した時点ですでに差異が生じていると考えられる。それにしても、キャッシュがない状態では問題ないのが解せない。またあとで考えよう。

Tags: web
[]


プロフィール

渡辺 慎太郎(na@10days.org)

分野別表示

Admin | Client | Dev | Excel | Linux | PC | PDA | Web | iPad | web | 家電 | 文具 | | 英語 | 言語 | | 音楽

月別表示

1999|07|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|

最近の記事

雨量情報 dictionary.com Yahoo google Yahoo! 路線情報 東京アメッシュ l-mura l-aka l-momo 目次 r-mura r-aka r-daidai r-kiiro asahi.com nogulabo r-sora r-midori r-midori r-momo