在过去的一年中,在线地图的发展是相当巨大,我们可以看到在线地图的极有价值的信息和其能力。这其中,最有名气的自然是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:
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);
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) {
02.
var
xml = GXml.parse(data);
03.
var
markers = xml.documentElement.getElementsByTagName(
"marker"
);
04.
for
(
var
i = 0; i < markers.length; i++) {
05.
var
name = markers[i].getAttribute(
"name"
);
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"
)),
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
<
分享到:
相关推荐
这个"Google Maps API编程资源大全"包含了丰富的资料,帮助开发者深入理解和使用这一技术。 首先,我们要理解什么是API(Application Programming Interface)。API是一组预定义的函数、类、对象和协议,用于构建...
源码文件"code"包含了上述所有概念的实际代码示例,这为读者提供了一手的实践材料,通过阅读和运行这些代码,可以更直观地学习Google Maps API的用法,从而提升开发技能。在实际开发中,开发者可以根据书中的指导,...
要使用Google Maps API,首先需要在Google Cloud Console中创建项目并获取API密钥,这是使用API的前提。 二、地图显示与自定义 通过JavaScript API,我们可以轻松地在网页上加载地图。通过设置地图的中心点、缩放...
Google Maps API V3 中文参考文档(JavaScript) Google Maps API V3 是 Google Maps 提供的一款强大的地图应用程序接口,允许开发者在网站或应用程序中轻松嵌入谷歌地图。该 API 的 JavaScript 版本提供了丰富的...
《Google Maps API开发大全code》是一份详尽的资源,旨在帮助开发者深入理解和熟练运用Google Maps API进行地图应用的开发。Google Maps API是Google提供的一项服务,允许开发者将地图功能集成到自己的网站或应用...
4. **许可和限制**:使用Google Maps API通常需要遵守Google的服务条款和使用限制,包括但不限于每日请求限制、商业用途的许可等。离线使用可能有额外的合规要求,开发者需确保遵循相关规定。 5. **地图渲染**:...
下面通过具体的代码片段来展示如何使用 Google Maps API 实现一些基本功能。 **创建地图实例:** ```javascript <script src="http://ditu.google.com/maps?file=api&v=2&key=ReplaceYourGoogleMapKeyHere...
**正文** Google Maps API V3 是谷歌为开发者提供的一个强大工具,用于在网站或应用程序中集成...通过阅读`Google_Maps_API_V3.pdf`文档,你可以深入学习每个特性的具体用法和示例代码,进一步提升你的地图开发技能。
1. API密钥:每个使用Google Maps API的项目都需要一个API密钥,用于身份验证和计费。 2. 用量限制:理解并管理API调用配额,防止超额费用产生。 九、源代码示例与辅助工具 配合书中的源代码示例,读者可以更直观地...
在IT行业中,Google API是开发者们广泛使用的工具之一,尤其在地理位置服务方面,Google Maps API更是扮演了核心角色。本文将深入探讨Google Maps API的开发详解,帮助你掌握如何利用这个强大的工具创建丰富的地图...
开发者需要在Google Cloud Console中创建一个项目,启用Maps JavaScript API,并获取API密钥,以便在网页中安全地使用API。同时,为了优化性能和控制费用,还可以配置API的使用限制和计费选项。 **地图的显示与定制...
获取 Google Maps API Key 在 Android 开发中,获取 Google Maps API Key 是一个重要的步骤,特别是对于初学者来说。下面将详细介绍如何获取 Google Maps API Key。 获取证书指纹(SHA1) 在获取 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 设定...
API 密钥是 Google Maps 服务的身份验证凭证,确保只有授权的开发者可以使用服务。申请 API 密钥时,你需要在 Google Cloud Console 中创建一个项目,并启用 Google Maps JavaScript API 和 Geocoding API(或其他...
论文首先介绍了Google Maps的功能特点和Google Maps API的使用方法,然后探讨了Google Maps API在网络地图服务中的应用。最后,论文还讨论了WebGIS的发展前景和应用价值。 关键词:Web地图服务;Google Maps API;...
使用Google Maps API首先需要获取一个API密钥(API Key)。API Key是与特定域名绑定的,用于验证请求来源,确保只有指定的网站可以使用API。在本地进行测试时,可以不使用API Key,但上线前必须申请。 **引入...
Kindle资源,Google Maps API开发大全。可使用Kindle PC端的软件阅读。