Google maps API開發(一)javascript
最近作一個小東西用到google map,突擊了一下,收穫不小,把本身學習的一些小例子記錄下來吧 html
1、加載Google maps APIjava
<script type="text/javascript" canvas
src="http://ditu.google.com/maps?file=api&v=2&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>api
您能夠到http://code.google.com/intl/zh-CN/apis/maps/signup.html註冊申請本身的API瀏覽器
2、加載簡單的Google地圖app
一、 加載Google地圖dom
//聲明一個GMap2全局變量post
var map;學習
function load()
{
//檢查瀏覽器的兼容性.
if (GBrowserIsCompatible())
{
map = new GMap2(document.getElementById("map")); //加載地圖
map.addControl(new GLargeMapControl()); //增長全功能控件
map.addControl(new GMapTypeControl()); //設置地圖類型
map.enableScrollWheelZoom(); //設置地圖支持滾輪
map.setCenter(new GLatLng(39.990168, 116.295304), 10); //設置地圖的中心座標
map.enableDoubleClickZoom(); //開啓雙擊google map會自動放大.
map.enableScrollWheelZoom(); //開啓滾動鼠標自動放大和縮小.
//
}
}
二、 添加一個建立GMarker的方法
function createMarker(baseIcon, point, html)
{
var icon = new GIcon(baseIcon);
var marker = new GMarker(point, icon);
GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
return marker;
}
三、 調用這個GMarker方法
var icon = new GIcon(G_DEFAULT_ICON);
var point = new GPoint(116.429114, 39.934322);
var html = '<div ><font color="blue">HelloWorld!</font></div>';
var marker = createMarker(icon, point, html);
map.addOverlay(marker);
這樣一個簡單的HelloWorld就顯示出來了
經過這個例子咱們能夠了解到GMap2、GMarker、GIcon這幾個核心類的基本應用
最後看看我截得圖:
天天進步一點點...
Google maps API開發(二)
這一篇主要實現怎麼調用Google maps API中的地址解析核心類GClientGeocoder:
主要功能包括地址解析、反向解析、本地搜索、周邊搜索等,
我這裏主要有兩個實例:
實例1、當你搜索一個地名的時候,解析它的經緯度信息,並在地圖上描點
實例2、搜索你的中心點所在區域的學校、商店等信息,並在地圖上描點
首先來說講實例一怎麼實現:
一、 加載google api
<script
type="text/javascript"src="http://ditu.google.com/maps?file=api&v=2&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>
二、 定義通用的全局變量和公共方法
var map;//GMap2的核心對象
var geocoder = null;//用來解析的
var markers = new Array();//用來存放GMarker
//======在地圖上描點的方法============
function createMarker(icon, point, html, index) {
var letter = String.fromCharCode("A".charCodeAt(0) + index);
icon.image = "http://ditu.google.com/mapfiles/marker" + letter + ".png";
var marker = new GMarker(point, icon);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
markers.push(marker);
map.addOverlay(marker);
}
//查詢點擊事件
function showLocation() {
map.clearOverlays();
document.getElementById('divOutput').innerHTML = "搜索中...";
var address = document.getElementById('txtAddress').value;
geocoder.getLocations(address, cb_showLocation);//搜索的核心方法
}
//回調事件,主要在界面上描點和右側產生列表信息
function cb_showLocation(result) {
// 顯示結果
if (result.Status.code == G_GEO_SUCCESS)
{
document.getElementById("divOutput").innerHTML = "成功(" + result.Placemark.length + ")<br />";
var icon = new GIcon(G_DEFAULT_ICON);
var lat, lng, point, address, marker;
for (var i = 0; i < result.Placemark.length; i++) {
lat = result.Placemark[i].Point.coordinates[1]; // lat
lng = result.Placemark[i].Point.coordinates[0]; // lng
address = result.Placemark[i].address; // 地址
point = new GLatLng(lat, lng);
document.getElementById("divOutput").innerHTML += ((i + 1) + " " + address + " <small>" + point.toString() + "</small><br />");
createMarker(icon, point, address, i);
}
}
else {
document.getElementById("divOutput").innerHTML = result.Status.code;
}
}
三、 地圖初始化
function init() {
//檢查瀏覽器的兼容性.
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
//設置地圖的中心座標.
var loc = new GLatLng(39.990168, 116.295304);
map.setCenter(loc, 5);
//建立帶有可在四個方向平移、放大、縮小的按鈕,以及縮放滑塊的控件。
map.addControl(new GLargeMapControl());
//建立帶有切換地圖類型的按鈕的控件。
map.addControl(new GMapTypeControl());
//設置地圖支持滾輪
map.enableScrollWheelZoom();
//實例化一個地址解析
geocoder = new GClientGeocoder();
}
}
四、 定義頁面加載事件和卸載事件
window.onload = init;
window.onunload = GUnload;
//========主界面==================
<!-- 地圖畫板 -->
<input type="text" id="txtAddress" name="txtAddress" size="40" /><input type="button" value="查詢" onclick="showLocation();" />
<div id="map_canvas" style="width: 600px; height: 500px ;float:left;"></div>
<div id="divOutput" style="float:left;" ></div>
//==============================
主要第一個例子就完成了,效果以下
實例二
1、加載google api,這裏用到三個
<script type="text/javascript" src="http://ditu.google.com/maps?file=api&v=2&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>
<script type="text/javascript" src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>
<script type="text/javascript" src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js"></script>
2、通用核心類、全局變量和公共方法
var map;
var hasMarker = false;
var markers = new Array();
var KMapSearch = window.KMapSearch = function(map_, opts_)
{
this.opts = { keyWord: opts_.keyWord || "", latlng: opts_.latlng || new GLatLng(31, 121), autoClear: opts_.autoClear || true, icon: opts_.icon || new GIcon(G_DEFAULT_ICON) };
this.map = map_;
this.gLocalSearch = new google.search.LocalSearch();
this.gLocalSearch.setCenterPoint(this.opts.latlng);
this.gLocalSearch.setResultSetSize(GSearch.LARGE_RESULTSET);
this.gLocalSearch.setSearchCompleteCallback(this, myTips);
}
//請除全部查詢結果
KMapSearch.prototype.clearAll = function() {
for (var i = 0; i < markers.length; i++) { this.map.removeOverlay(markers[i]); }
markers.length = 0;
}
//開始查詢
KMapSearch.prototype.execute = function(latLng) {
if (latLng) { this.gLocalSearch.setCenterPoint(latLng); }
this.gLocalSearch.execute(this.opts.keyWord);
}
//取得查詢結果,並以DIV的方式展現
KMapSearch.prototype.getResult = function(result, i) {
var container = document.createElement("div");
container.className = "list";
var myRadom = (new Date()).getTime().toString() + Math.floor(Math.random() * 10000);
container.id = myRadom;
container.innerHTML = i + "、" + result.title + "<br />地址:" + result.streetAddress;
//this.createMarker(new GLatLng(result.lat, result.lng), result.html, myRadom);
return container;
}
3、載入事件和輔助方法
//載入
function OnLoad() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.addControl(new GLargeMapControl());
map.addControl(new GMenuMapTypeControl());
map.addControl(new GOverviewMapControl());
map.enableScrollWheelZoom();
map.setCenter(new GLatLng(39.990168, 116.295304), 10);
//添加右鍵單擊事件
GEvent.addListener(map, "singlerightclick", function(point) {
var initPt = map.fromContainerPixelToLatLng(point);
map.clearOverlays();
marker = new GMarker(initPt, { draggable: true });
if (hasMarker) {
marker.setLatLng(initPt);
map.panTo(initPt);
}
else {
//拖拽事件
GEvent.addListener(marker, "dragend", function() {
initPt = marker.getLatLng();
map.panTo(initPt);
searchMap(initPt);
});
hasMarker = true;
}
map.addOverlay(marker);
searchMap(initPt);
});
}
}
//點擊提示信息
function myTips() {
var content = "";
var resultdiv = document.getElementById("map");
for (j = 0; j < markers.length; j++) {
map.removeOverlay(markers[j]);
}
markers.length = 0;
var results = this.gLocalSearch.results;
var icon = new GIcon(G_DEFAULT_ICON);
var savedResults = document.getElementById("schollContainer");
if (this.gLocalSearch.results)
{
if (this.opts.autoClear) {
savedResults.innerHTML = "";
}
for (var i = 0; i < results.length; i++) {
content = '<p>' + '名稱:' + results[i].title + '<br />' + '地址:' + results[i].streetAddress + '<br />' + '座標:' + results[i].lat + ',' + results[i].lng + '</p>';
myCreateMarker(new GPoint(results[i].lng, results[i].lat), icon, content, i);
savedResults.appendChild(this.getResult(this.gLocalSearch.results[i], i + 1));
}
}
}
//地圖上標註
function myCreateMarker(point, icon, html, index) {
var letter = String.fromCharCode("A".charCodeAt(0) + index);
icon.image = "http://ditu.google.com/mapfiles/marker" + letter + ".png";
var marker = new GMarker(point, icon);
GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
markers.push(marker);
map.addOverlay(marker);
}
//在給定的座標附近搜索指定的關鍵字
function searchMap(initPt) {
var myIcon = new GIcon(G_DEFAULT_ICON);
var mapSearch = new KMapSearch(map, { latlng: initPt, icon: myIcon, keyWord: "駕校" });
mapSearch.clearAll();
mapSearch.execute();
}
五、 最後
window.onload = OnLoad;
window.onunload = GUnload;
//========主界面==================
<!-- 地圖畫板 -->
<div id="map_canvas" style="width:640px; height:480px ;float:left;"></div>
<div style="width:4px; height:480px ;float:left;"></div>
<div id="searchResult">駕校:<div id="schollContainer"></div></div>
//==============================
搞定, 最後的效果如圖:
天天進步一點點...