`
varsoft
  • 浏览: 2521472 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Google Maps API用法教程

阅读更多

原文链接:http://coolshell.cn/?p=1561酷壳

在过去的一年中,在线地图的发展是相当巨大,我们可以看到在线地图的极有价值的信息和其能力。这其中,最有名气的自然是Google Maps。. Google Maps由一个相当强大的开发引擎并也有一个很大的社区提示支持。

Google 允许各种web masters 通过Google Maps API来增加或自定义他们站点特定的地图,你可能从这里取得Google API key 。一个地图 API key只对一个“目录”或域有效。key绑定了你的域名,你要在网站上放地图,需要有对应的key,否则拒绝读取地图数据,在本地测试可以不用key。当然,你可以申请多个API key。

创建一个简单的地图

在你的站点上引入Google Maps 是一件很简单的事情,你只需要加入:

  • 引入Google的JavaScript 文件
  • 设置JavaScript 一些参数
  • 一个你需要显示地图的HTML layer

Google的Javascript文件引入:

1.<script
2.charset="UTF-8"
3.src=http://maps.google.com/maps?file=api&v=2&hl=en&oe=utf-8&key=API_KEY
4.type="text/javascript">
5.</script>

注意 我们可以改变语言,比如说,把“hl=en” 改成中文“hl=zh-CN” 。我们还得要把“API_KEY” 改成我们向Google申请来的那个。

说明:使用 UTF-8 编码会更好些。

设置地图参数:

这是你可定制有个性化的Google Maps的地方。我们可以增加一些参数来改变地图的样式。例如,我们可以设置地图的载入和显示的坐标。下面是相关的代码:

1.function initialize() {
2.if (GBrowserIsCompatible()) {
3.var map = new GMap2(document.getElementById("map_canvas"));
4.map.setCenter(new GLatLng(37.97918, 23.71665), 13);
5.map.setUIToDefault();
6.}
7.}

请注意上面高亮的那一条语句,第一个是纬度坐标和第二个是经度坐标,“13” 表示地图缩放的程度,这个值可以取1 到17。

要知道所在地点的纬度和经度,你可以使用这个工具,这个工具很容易使用,只需要把地图移到你想要的区域,然后,把鼠标放在中心就可以了。

地图标记

你可以在地图上放上一个标记来标出一个特定的位置,下面是一个示例代码。

1.var point = new GLatLng(37.97110, 23.72601);
2.map.addOverlay(new GMarker(point));

于是,我们整个代码看起来是下面这个样子:

01.function initialize() {
02.if (GBrowserIsCompatible()) {
03.var map = new GMap2(document.getElementById("map_canvas"));
04.map.setCenter(new GLatLng(37.97918, 23.71665), 13);
05.var point = new GLatLng(37.97110, 23.72601);
06.map.addOverlay(new GMarker(point));
07.map.setUIToDefault();
08.}
09.}

上面的示例把我们的地图的中心放在了希腊雅典,标记了雅典卫城。

气球提示

气球提示一个很不错的界面,他可以用于放置一些小提示或或是一些信息。例如,下面的代码将放置一个在雅典卫城山上放一个气球提示来显示一些信息:

01.function initialize() {
02.if (GBrowserIsCompatible()) {
03.var map = new GMap2(document.getElementById("map_canvas"));
04.map.setCenter(new GLatLng(37.97110, 23.72601), 13);
05.var html = "Parthenon 帕台农神庙, 地址: Acropolis Hill";
06.map.openInfoWindow(map.getCenter(),
07.document.createTextNode(html));
08.map.setUIToDefault();
09.}
10.}

活动标记

我们可以合并一些标记和气球提示来创建一个活动标记,这样一来,我们可以达到这样的效果——当用户点击某个标记的时候才会显示提示。代码如下所示:

01.function initialize() {
02.if (GBrowserIsCompatible()) {
03.var map = new GMap2(document.getElementById("map_canvas"));
04.map.setCenter(new GLatLng(37.97918, 23.71665), 13);
05.var baseIcon = new GIcon(G_DEFAULT_ICON);
07.baseIcon.iconSize = new GSize(20, 34);
08.baseIcon.shadowSize = new GSize(37, 34);
09.baseIcon.iconAnchor = new GPoint(9, 34);
10.baseIcon.infoWindowAnchor = new GPoint(9, 2);
11.
12.function createMarker(point, index) {
13.var redIcon = new GIcon(baseIcon);
15.markerOptions = { icon:redIcon };
16.var marker = new GMarker(point, markerOptions);
17.GEvent.addListener(marker, "click", function() {
18.marker.openInfoWindowHtml("Parthenon, Address: Acropolis Hill");
19.});
20.return marker;
21.}
22.
23.var latlng = new GLatLng(37.97110, 23.72601);
24.map.addOverlay(createMarker(latlng));
25.}
26.}

让我来梳理一下上面的代码。下面的部分是在标记下增加一个阴影:

1.var baseIcon = new GIcon(G_DEFAULT_ICON);
2.baseIcon.shadow = “http://www.google.com/mapfiles/shadow50.png;
3.baseIcon.iconSize = new GSize(20, 34);
4.baseIcon.shadowSize = new GSize(37, 34);
5.baseIcon.iconAnchor = new GPoint(9, 34);
6.baseIcon.infoWindowAnchor = new GPoint(9, 2);

标记的Action是在这里设置的:

01.function createMarker(point, index) {
02.var redIcon = new GIcon(baseIcon);
04.markerOptions = { icon:redIcon };
05.var marker = new GMarker(point, markerOptions);
06.GEvent.addListener(marker, "click", function() {
07.marker.openInfoWindowHtml("Parthenon, Address: Acropolis Hill");
08.});
09.return marker;
10.}

这里是我们的标记的坐标:

1.var latlng = new GLatLng(37.97110, 23.72601);
2.map.addOverlay(createMarker(latlng));

载入地图

我们可以通过两种方法载入地图。我们可以让地图在整网页载入时载入(通过使用body的load事件),也可以把载入过程赋给其它事件。下面的两个方法是我们需要注意的:

  • initialize() 载入地图
  • GUnload() 卸载地图以释放内存

我们当然还需要使用HTML的DIV标签来指定一个ID,这样才能被JavaScript使用,在我们的示例中,我们使用“map_canvas”。我们也能使用CSS来渲染这个DIV层。

定制地图

你可以使用自定义的标记和阴影。有两个工具可以帮助你创建这些图标—— 地图标记 阴影。你也可以使用HTML和CSS来定义气球提示。

加入多个标记并分组

我们可以标记多个地点,并可以把它们根据我们的需要分组。这样一来,我们可以通过不同的标记图标来显示地点的不同属性,比如:酒店,车站等。要做到这样,我们只需要使用一个XML文件,一个简单的XML文件如下所示:

01.<markers>
02.<marker
03.name="标题"
04.label="这是一个标签"
05.desc="气球提示的描述"
06.lat="37.97167" lng="23.72581"
07.type="标签的种类,如 Bridge"
08.address="地址信息"
09.icona="图标"
10./>
11.</markers>

你可以在这个XML文件中加入多个地点信息。有一件事你需要小心的是,当出现一一些特定字符时(比如单引号,双引号,“#@$<>”等),你需要使用HTML的转义。

使用这XML的脚本如下:

当然,你需要设置一些参数:

01.var iconRed = new GIcon();
02.iconRed.image = '../img/marker-red.png';
03.iconRed.shadow = '';
04.iconRed.iconSize = new GSize(32, 32);
05.iconRed.shadowSize = new GSize(22, 20);
06.iconRed.iconAnchor = new GPoint(16, 16);
07.iconRed.infoWindowAnchor = new GPoint(5, 1);
08.var customIcons = [];
09.
10.customIcons["ancient"] = iconRed;
11.var markerGroups = { "ancient": []};

上面,我们给customIcons 的“ancient”属性设置成了iconRed ,于是我们应该在我们的XML文件中使用类型(ancient) ,如果我们把这个XML文件命名为: markers.xml,那么,我们的代码如下:

01.GDownloadUrl("markers.xml", function(data) { //We tell Google Maps to load our file
02.var xml = GXml.parse(data);
03.var markers = xml.documentElement.getElementsByTagName("marker"); //and read markers
04.for (var i = 0; i < markers.length; i++) {
05.var name = markers[i].getAttribute("name"); //From here down we assign variables.
06.var label = markers[i].getAttribute("label");
07.var desc = markers[i].getAttribute("desc");
08.var address = markers[i].getAttribute("address");
09.var type = markers[i].getAttribute("type");
10.var icona = markers[i].getAttribute("icona");
11.var point = new GlatLng(parseFloat(markers[i].getAttribute("lat")), //and we set the lat-long
12.parseFloat(markers[i].getAttribute("lng")));
13.var marker = createMarker(point, name, label, desc, address, type, icona);
14.map.addOverlay(marker);
15.}
16.});
17.}
18.}
19.
20.function createMarker(point, name, label, desc, address, type, icona) {
21.var marker = new LabeledMarker(point, {icon: customIcons[type], labelText: label, labelOffset: new GSize(-6, -8)})
22.};

要分组标记,你需要下面的代码:

1.markerGroups[type].push(marker);
2.var html = "<img src=" + icona + " height=150 border=0 /><br><br><span><b>"+ name + "</b><br/>" +
3.desc + "<br/><b>Address:</b> " + address + "<br/><br/><span>";
4.GEvent.addListener(marker, 'click', function() {
5.marker.openInfoWindowHtml(html);
6.});
7.return marker;
8.}

要使用不同的图标,你可以使用相同的方法。

01.var iconRed = new GIcon();
02.iconRed.image = '../img/marker-red.png';
03.iconRed.shadow = '';
04.iconRed.iconSize = new GSize(32, 32);
05.iconRed.shadowSize = new GSize(22, 20);
06.iconRed.iconAnchor = new GPoint(16, 16);
07.iconRed.infoWindowAnchor = new GPoint(5, 1);
08.
09.var iconGreen = new GIcon();
10.iconGreen.image = '../img/marker-green.png';
11.iconGreen.shadow = '';
12.iconGreen.iconSize = new GSize(32, 32);
13.iconGreen.shadowSize = new GSize(22, 20);
14.iconGreen.iconAnchor = new GPoint(16, 16);
15.iconGreen.infoWindowAnchor = new GPoint(5, 1);
16.
17.var iconBrown = new GIcon();
18.iconBrown.image = '../img/marker-brown.png';
19.iconBrown.shadow = '';
20.iconBrown.iconSize = new GSize(32, 32);
21.iconBrown.shadowSize = new GSize(22, 20);
22.iconBrown.iconAnchor = new GPoint(16, 16);
23.iconBrown.infoWindowAnchor = new GPoint(5, 1);
24.
25.var customIcons = [];
26.
27.customIcons["hotel"] = iconRed;
28.customIcons["bridge"] = iconGreen;
29.customIcons["hill"] = iconBrown;
30.var markerGroups = { "hotel": [], "bridge": [], "hill": []};

所以,如果我们在XML 文件中设置了不同的种类,如:hotel,bridge和 hill,我们也应该需要不同的颜色和图标。

过滤显示标记

我们还可以让我们的标记更友好一些。我们可以让用户决定是否显示标记,这样的话,地图上的标记就不会太多,也会根据用户的需求来显示相当的标记。我们可以使用几个按钮,复选框,或是链接来完成这个事情。要做到这个事,你需要在“map.addMapType(G_SATELLITE_3D_MAP); ”后面加入下面的代码:

1.document.getElementById("hotelCheckbox").checked = true;
2.document.getElementById("bridgeCheckbox").checked = true;
3.document.getElementById("hillCheckbox").checked = true;
4.document.getElementById("labelsCheckbox").checked = true;

然后再加入下面的这些JavaScript 的代码:

01.function toggleGroup(type) {
02.for (var i = 0; i < markerGroups[type].length; i++) {
03.var marker = markerGroups[type][i];
04.if (marker.isHidden()) {
05.marker.show();
06.} else {
07.marker.hide();
08.}
09.}
10.}
11.
12.function toggleLabels() {
13.var showLabels = document.getElementById("labelsCheckbox").checked;
14.for (groupName in markerGroups) {
15.for (var i = 0; i < markerGroups[groupName].length; i++) {
16.var marker = markerGroups[groupName][i];
17.marker.setLabelVisibility(showLabels);
18.}
19.}
20.}
21.
22.function <
分享到:
评论
1 楼 check-枫叶 2011-11-04  
您好!我现在也在弄google Maps,现在可以把2点之间的距离得到  但现在还需要加一个功能  就是中间可以设置站点  然后在把总距离算出来    就是增加站点的这个还没找到资料  请问你这有资料么  我的Q是694833613  有资料请给我一份  谢谢您啦

相关推荐

    Google Maps API编程资源大全

    这个"Google Maps API编程资源大全"包含了丰富的资料,帮助开发者深入理解和使用这一技术。 首先,我们要理解什么是API(Application Programming Interface)。API是一组预定义的函数、类、对象和协议,用于构建...

    图书Google Maps API开发大全的各章源码

    源码文件"code"包含了上述所有概念的实际代码示例,这为读者提供了一手的实践材料,通过阅读和运行这些代码,可以更直观地学习Google Maps API的用法,从而提升开发技能。在实际开发中,开发者可以根据书中的指导,...

    Google Maps API开发大全

    要使用Google Maps API,首先需要在Google Cloud Console中创建项目并获取API密钥,这是使用API的前提。 二、地图显示与自定义 通过JavaScript API,我们可以轻松地在网页上加载地图。通过设置地图的中心点、缩放...

    Google Maps API V3 中文参考文档(JavaScript)

    Google Maps API V3 中文参考文档(JavaScript) Google Maps API V3 是 Google Maps 提供的一款强大的地图应用程序接口,允许开发者在网站或应用程序中轻松嵌入谷歌地图。该 API 的 JavaScript 版本提供了丰富的...

    Google Maps API开发大全code

    《Google Maps API开发大全code》是一份详尽的资源,旨在帮助开发者深入理解和熟练运用Google Maps API进行地图应用的开发。Google Maps API是Google提供的一项服务,允许开发者将地图功能集成到自己的网站或应用...

    Google Maps API v3 (3.16.2) 离线开发包

    4. **许可和限制**:使用Google Maps API通常需要遵守Google的服务条款和使用限制,包括但不限于每日请求限制、商业用途的许可等。离线使用可能有额外的合规要求,开发者需确保遵循相关规定。 5. **地图渲染**:...

    Google Maps API.pdf

    下面通过具体的代码片段来展示如何使用 Google Maps API 实现一些基本功能。 **创建地图实例:** ```javascript &lt;script src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ReplaceYourGoogleMapKeyHere...

    Google_Maps_API_V3.rar_Google Maps api v3_谷歌地图

    **正文** Google Maps API V3 是谷歌为开发者提供的一个强大工具,用于在网站或应用程序中集成...通过阅读`Google_Maps_API_V3.pdf`文档,你可以深入学习每个特性的具体用法和示例代码,进一步提升你的地图开发技能。

    Google Maps API 开发大全

    1. API密钥:每个使用Google Maps API的项目都需要一个API密钥,用于身份验证和计费。 2. 用量限制:理解并管理API调用配额,防止超额费用产生。 九、源代码示例与辅助工具 配合书中的源代码示例,读者可以更直观地...

    Google API开发详解:Google Maps部分

    在IT行业中,Google API是开发者们广泛使用的工具之一,尤其在地理位置服务方面,Google Maps API更是扮演了核心角色。本文将深入探讨Google Maps API的开发详解,帮助你掌握如何利用这个强大的工具创建丰富的地图...

    Google+Maps+API编程资源大全

    开发者需要在Google Cloud Console中创建一个项目,启用Maps JavaScript API,并获取API密钥,以便在网页中安全地使用API。同时,为了优化性能和控制费用,还可以配置API的使用限制和计费选项。 **地图的显示与定制...

    获取Google Maps APIKey

    获取 Google Maps API Key 在 Android 开发中,获取 Google Maps API Key 是一个重要的步骤,特别是对于初学者来说。下面将详细介绍如何获取 Google Maps API Key。 获取证书指纹(SHA1) 在获取 Google Maps API...

    Google Maps API深度历险

    │ │ └─7.1.3 在不同URL地址下使用Google Maps API │ ├─7.2 挖掘Google Maps API中未公开的功能 │ │ ├─7.2.1 为Google地图添加鸟瞰地图 │ │ ├─7.2.2 最大化GInfoWindow信息窗口 │ │ └─7.2.3 设定...

    google maps api PHP版本

    API 密钥是 Google Maps 服务的身份验证凭证,确保只有授权的开发者可以使用服务。申请 API 密钥时,你需要在 Google Cloud Console 中创建一个项目,并启用 Google Maps JavaScript API 和 Geocoding API(或其他...

    基于Google Maps API的网络地图服务系统的研究与应用.pdf

    论文首先介绍了Google Maps的功能特点和Google Maps API的使用方法,然后探讨了Google Maps API在网络地图服务中的应用。最后,论文还讨论了WebGIS的发展前景和应用价值。 关键词:Web地图服务;Google Maps API;...

    Google maps api

    使用Google Maps API首先需要获取一个API密钥(API Key)。API Key是与特定域名绑定的,用于验证请求来源,确保只有指定的网站可以使用API。在本地进行测试时,可以不使用API Key,但上线前必须申请。 **引入...

    Google Maps API开发大全 (华章原创精品).azw3

    Kindle资源,Google Maps API开发大全。可使用Kindle PC端的软件阅读。

Global site tag (gtag.js) - Google Analytics