スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
by MONOKo  at --:-- |  スポンサー広告 |   |   |  page top ↑

GoogleMapを利用する

BakeryにGoogleMapの記事があったのですが、いまいちピンとこないので原始的な手口で・・・
[lng]と[lat]に緯度経度[address]に住所を入力します。

デーブルの作成
CREATE TABLE points (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
lng FLOAT,
lat FLOAT,
address TEXT,
created DATETIME NOT NULL,
modified DATETIME NOT NULL
);


points_controller.php
<?php
class PointsController extends AppController {

var $name = 'Points';
var $helpers = array('Html', 'Javascript');

function index($id = null){
$this->set('id', $id);
}

function getjson($id = null){
$this->layout = "ajax";
Configure::write("debug", 0);

$params = array(
'conditions' => array('Point.id' => $id)
);
$points = $this->Point->find('first', $params);

if(!empty($points['Point']['address'])){
$code = mb_detect_encoding($points['Point']['address']);
if($code != "UTF-8"){
$points['Point']['address'] = mb_convert_encoding($points['Point']['address'], 'UTF-8', $code);
}
}
$this->set("points" ,$points);
}

}
?>


index.ctp
<div id="map" style="width:400px; height:400px"></div>

<script type="text/javascript">
//<![CDATA[
if (GBrowserIsCompatible()) {
var zpoint = 16;
var map = new GMap2(document.getElementById("map"));

map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.disableDoubleClickZoom();
var geocoder = new GClientGeocoder();

GDownloadUrl("<?php echo $html->url('/points/getjson/'.$id)?>", function(data){
var points = eval("(" + data + ")");

if(points.Point.lat !=null && points.Point.lng !=null){
createMarker(new GLatLng(points.Point.lat, points.Point.lng));
}
else if(points.Point.address !=null){
var address = points.Point.address;
if(geocoder){
geocoder.getLatLng(address, createMarker);
}
}
});

function createMarker(point){
map.setCenter(point, zpoint);
var marker = new GMarker(point);
map.addOverlay(marker);
}
}
//]]>
</script>


getjson.ctp
<?php echo $javascript->object($points)?>

getjson.ctpの表示される内容は、
{"Point":{"id":"1","lng":"139.745","lat":"35.6586","address":null,"created":"2009-12-10 00:00:00","modified":"2009-12-10 00:00:00"}}

となります。
スポンサーサイト
by MONOKo  at 18:20 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。