原文:Google maps API开发

Google maps API开发(一)

最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧

一、加载Google maps API

<script type="text/javascript"

src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>

您可以到http://code.google.com/intl/zh-CN/apis/maps/signup.html注册申请自己的API

二、加载简单的Google地图

1、 加载Google地图

//声明一个GMap2全局变量

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(); //开启滚动鼠标自动放大和缩小.

//

}

}

2、 添加一个创建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;

}

3、 调用这个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、 加载google api

<script

type="text/javascript"src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>

2、 定义通用的全局变量和公共方法

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;

}

}

3、 地图初始化

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();

}

}

4、 定义页面加载事件和卸载事件

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&amp;v=2&amp;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();

}

5、 最后

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>

//==============================

搞定, 最后的效果如图:

源码实例下载

每天进步一点点...

Google maps API开发的更多相关文章

  1. Google maps API开发(一)(转)

    一.加载Google maps API <script type="text/javascript" src="http://ditu.google.com/map ...

  2. Google maps API开发(二)(转)

    这一篇主要实现怎么调用Google maps API中的地址解析核心类GClientGeocoder: 主要功能包括地址解析.反向解析.本地搜索.周边搜索等, 我这里主要有两个实例: 实例一.当你搜索 ...

  3. Google Maps API V3 之绘图库 信息窗口

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  4. Google Maps API V3 之 图层

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  5. Google Maps API V3 之 路线服务

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  6. Google Maps API Web Services

    原文:Google Maps API Web Services 摘自:https://developers.google.com/maps/documentation/webservices/ Goo ...

  7. google maps api申请的问题

    现在已经改由统一的GOOGLE API控制台进行所有GOOGLE API的管理了. 方法是使用Google帐号登入 https://code.google.com/apis/console. 然后在所 ...

  8. Google Maps API Key申请办法(最新)

    之前的Google Maps Api的API Key很容易申请,只需要按照一个简单的表单提交部署的网站地址即可,自动生成API Key并给出引用的路径. 但是最近在处理另外一个项目的时候发现之前的这种 ...

  9. 如何插入谷歌地图并获取javascript api 秘钥--Google Maps API error: MissingKeyMapError

    参考:https://blog.csdn.net/klsstt/article/details/51744866 Google Maps API error: MissingKeyMapError h ...

随机推荐

  1. sqlserver 无法初始化via支持库[QLVIPL.DLL]

    安装数据库后,在sqlserver configuration manager, sqlserver的网络配置,有将协议 shared memory,named pipes,tcp/ip,via全部启 ...

  2. Jenkins(二) 安装、新建Jobs与删除及SVN配置(转)

    官网首页(https://jenkins-ci.org/)就提供了windows版本的Jenkins安装包.可以自己下载一个用于学习.安装后自动打开http://localhost:8080,就可以看 ...

  3. JAVA中的super和this关键字的使用

    一 this关键字 this关键字可以出现在构造方法和实例方法中,不能出现在静态方法中,这是因为静态方法可以用类名来调用,这时可能还没有任何对象诞生. this主要有两种用法: 1 用在构造方法中,调 ...

  4. Redis集群方案及实现

    在作出Redis群集解决方案,他跑了小半个.行表现得非常稳定在几乎相同的经历与大家分享,我写在前面的文章数据在线服务的一些探索经验,能够做为背景阅读 应用 我们的Redis集群主要承担了下面服务:1. ...

  5. 安卓模拟器错误: Could not open

    在进行android模拟器測试的时候,出现下面错误,进度条满了之后就没反应了.图例如以下: 引起这个问题的可能原因有非常多: 原因一:由于我们採用的是绝对路径定位.也就是说在环境变量里面把路径写死了, ...

  6. Azure VM Public IP设置

    Azure虚拟机的Public IP是用于客户端直连云中的虚拟机,可以认为是一个外网IP,一般我们为虚拟机设置终结点,例如HTTP的80端口,如果使用Public IP可以不使用Azure Porta ...

  7. ArcGIS for Silverlight 地图卷帘

    原文:ArcGIS for Silverlight 地图卷帘 ArcGIS 地图卷帘 for Silverlight 地图卷帘,其实就是遮罩的效果,在Silverlight里实现这样的效果,对于熟悉S ...

  8. Linux netstat订购具体解释

    简单介绍 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics).masquerade 连接.多播成员 (Multicast Memb ...

  9. JMeter模拟多个用户进行登录

    1.将用户名密码保存在cvs或txt文件中格式为 username1,password1 username2,password2 username3,password4 一行一个,用户名和密码之间使用 ...

  10. C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码)

    原文:C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码) 自动填密码大家可能都不莫生,最有名的应该是 按键精灵 只要是一个可以输入的地方都可以能过按键精灵来完成输入.我今 ...