Google Map开发系列(四)——使用JavaScript创建地图步骤详解

本文详细解析了创建地图的精简代码流程,包括导入地图API类库、定义地图容器、创建并配置GMap2对象,以及注意事项,旨在帮助开发者快速理解并实践地图展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一段经过精简的代码:

 

 

新建一个空白的文本文件,把上面这段代码copy过去,不要改变代码的任何顺序,然后把这个文本文件保存为html文件,使用浏览器打开(不要使用MS的IE),看看你能看到什么!

对这段代码的详细解释

上面的这段代码就是创建一个地图的核心步骤:

1、导入地图API类库。

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

      注意这里的参数key,我在以前的文章里已经详细解释过了,如果你只是在本地运行,暂时可以不用管它。

2、在页面的body元素中定义一个地图容器。

      <body>

        <div id="mapContainer" style="height:400px; width:400px;"></div>

      </body>

      这个地图容器一般使用div元素来定义,如果你愿意,使用p元素或者其他你能想到的元素都可以,但是都应该是块元素,并且必须定义它的id,保证在后面的步骤里能够通过document.getElementById找到这个元素。

      容器的style属性在这里是用来定义这个容器的大小,从而决定所显示地图的大小,当然,如果你在这里不定义也可以通过其他的手段来达到目的,这里暂且先认为这个style的定义和id属性一样也是必不可少的吧。

      其实body元素在这里也有一些特殊的作用,就是保证下一步骤在页面的html元素全部加载结束后再执行,详细的理论就不细说了。

3、定义你自己的script区域,在里面new一个GMap2对象,并且指定其显示所需的两个基本要素:中心、缩放层次。

      <script type="text/javascript">

         var map = new GMap2(document.getElementById("mapContainer"));

         map.setCenter(new GLatLng(33.0, 106.0), 3);

      </script>

     这里的GMap2是谷歌地图API中最重要的核心类,对应在页面上显示的地图,所有对地图的操作都需要在已经创建(new)了GMap2对象的基础上才能够进行。在调用GMap2构造函数是使用的参数就是在上一步定义的地图容器,DOM对象,使用document.getElementById获取。

     要在页面上正常显示地图,仅仅调用GMap2类的构造函数创建一个GMap2对象还不够,你还需要指定这个GMap2对象的中心,通常也顺便指定它的缩放层次,否则就会默认显示缩放层次为0。

     要指定新创建地图的中心,需要使用地图API里面定义的另一个常用类GLatLng,可以把这个类简单的认为是对地理坐标的封装类,构造函数中第一个参数是南北向的纬度,第二个参数是东西向的经度。

     调用GMap2的setCenter方法设定完地图的中心和缩放层次,这个地图就可以正常显示了。

还需要关心的几个问题:

    上面的示例代码仅仅是为了显示一个试验性质的简单地图,所以把很多暂时不是很必要的代码都去掉了,如果你需要创建具有很好的兼容性、并且能够发布到你自己的网站上的地图,还需要注意这几个问题:

    1、为了保证有足够的兼容性,谷歌建议使用XHTML来定义显示地图的html页面,所以,你需要在这个页面的顶部声明XHTML的DOCTYPE,并且在html中声明XHTML的命名空间

       <!DOCTYPE html PUBLIC

        "-//W3C//DTD XHTML 1.0 Strict//EN"

        "http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd">

      <html xmlns="http://www.w3.org/1999/xhtml">

      当然,最好你自己的页面代码也能够符合XHTML的语法规则。相对我们现在的HTML4.01来说,可以把XHTML语法规则简单的归纳如下:

      html、head、title、body元素一个都不能少,并且只能有html一个root元素;

      不要使用简化的属性,必须使用“name='value'”的形式;

      标签名和属性名都用小写字母,属性值要用引号括起来;

      标签必须是闭合的,并且不能交叉嵌套;

      使用id属性而不是name属性来获取元素;

    2、为了兼容“伟大的”IE浏览器,以便能够在IE中也正确显示地图中的折线,需要在html标签中增加对VML命名空间的声明

        <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">

        这个很容易忽略,导致你在IE里的折线不能正常显示,所以把这一点单列出来加以强调。

    3、对于通用的浏览器兼容性检查,地图API提供了一个全局方法GBrowserIsCompatible()来保证地图API是在它所兼容的浏览器里运行的,这个兼容浏览器列表我也没找到最新的,谷歌文档里给出了一个远古时代的列表,所以不列也罢,对我们目前通用的FireFox、IE、Safari、Opera浏览器里运行地图API都没有问题。

      这里只说一下GBrowserIsCompatible()这个方法的使用:

      从名字也可以看出,GBrowserIsCompatible()方法返回一个boolean类型的值,所以,把我们对地图操作的起点放在对这个方法返回值的判断块中,形如:

      if(GBrowserIsCompatible()){

        //开始创建和操作地图

      } else {

        //如果有必要,就在这里定义你对这个异常的处理

      }

      当然,在你自己的代码中,针对不同的浏览器环境你还是需要自己实现兼容性的代码,这里的GBrowserIsCompatible()只是保证地图API类库是在它兼容的环境中运行的。

    4、注册你要发布页面所在网站的谷歌地图API密钥,替换掉示例代码里的key,我在这里详细解释过这个密钥,不多说了。

    5、为了保证你的页面在任何可用的网络环境下都能快速加载并且正确显示,建议定义body元素的onload方法,在onload方法中开始你的JS动作。同时,把读入地图API的script标签放在head元素中,而把你自己的JavaScript代码块放到body标签的后面去定义。如果对浏览器的加载顺序比较熟悉的话,你就不必遵守我说的规则了,自由定义你认为应该的JavaScript声明顺序。

    6、为了避免JavaScript中引用页面的DOM元素可能存在的内存泄漏(尤其是在“伟大的”IE浏览器中),你需要使用地图API中定义的GUnload()方法作为你的body元素的onunload方法,并且最好把这个作为一个必须的规则记住。但是GUnload()方法不是避免内存泄漏的大力丸,所以,你在自己的代码中还是需要注意避免内存泄漏这个问题。

    7、为了能够在页面上正常显示中文,需要把页面的字符集定义为utf-8。

    所以,一个完整的应用谷歌地图API的页面代码如下:

 

 

### 如何使用HTML5设计制作领养流浪动物的网站 #### 项目概述 为了创建一个基于HTML5的动物领养网站,需综合运用HTML5、CSS3以及JavaScript来实现响应式布局、多媒体展示和其他互动特性。此类型的网站旨在提供给访问者有关可被收养宠物的信息,并指导他们完成整个领养过程。 #### 技术栈说明 - **HTML5**: 构建页面的基础语法,支持新的语义化标签如`<article>`、`<section>`等,有助于提高搜索引擎优化(SEO)[^1]。 - **CSS3**: 提供更强大的样式控制能力,包括但不限于动画效果(@keyframes),媒体查询@media rule以适应不同设备屏幕尺寸,从而确保良好的用户体验无论是在桌面还是移动平台上都能保持一致的良好表现形式[^2]。 - **JavaScript**: 增强用户的交互体验,比如通过AJAX异步加载数据而无需刷新整个页面;或是利用Canvas API绘制图形图像,甚至可以直接嵌入视频播放器以便于分享更多关于待领养动物的故事片段。 #### 实现步骤详解 ##### 页面结构搭建 采用标准的HTML文档模板作为起点,在其中引入必要的外部资源文件(例如Google Fonts字体服务链接),并设置好基本的meta信息(字符集声明charset="UTF-8", viewport meta tag用于移动端适配): ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>流浪动物领养平台</title> <!-- 引入谷歌字体 --> <link href='//fonts.googleapis.com/css?family=Roboto' rel='stylesheet'> <!-- 设置视窗宽度等于物理像素密度下的实际宽度, 初始缩放比例为1.0 --> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 自定义样式表路径 --> <link rel="stylesheet" type="text/css" href="./css/style.css"/> </head> <body> <!-- 主体内容区域 --> <main role="main"></main> <script src="./js/main.js"></script> </body> </html> ``` ##### 添加导航栏与主要内容区 为了让浏览更加直观方便,可以在顶部添加固定式的主导航条,内部放置几个主要分类项指向不同的子页面或板块。同时也要预留出足够的空间用来呈现核心资讯——即那些等待被人带走的小生命们! ```html <header class="header-bar fixed-top bg-light shadow-sm p-3 mb-5 rounded-bottom border-bottom"> <nav aria-label="Main navigation bar" id="navbarExampleDefault" class="container navbar-expand-lg d-flex justify-content-between align-items-center flex-wrap"> <a class="navbar-brand text-primary fw-bold fs-4 me-auto ms-md-3" href="#">流浪动物之家</a> <button class="navbar-toggler collapsed border-0 py-2 px-3 mx-2 my-n1 order-last" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse w-100 mt-2 mt-lg-0 ps-lg-3 pe-xl-5" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li><a class="nav-link active link-dark" aria-current="page" href="#">首页</a></li> <li><a class="nav-link link-secondary" href="#">关于我们</a></li> <li><a class="nav-link link-success" href="#">在线预约</a></li> <li><a class="nav-link link-info" href="#">联系我们</a></li> </ul> <form action="" method="get" accept-charset="utf-8" autocomplete="off" class="d-none d-lg-block"> <input placeholder="搜索..." type="search" name="q" value=""> <button type="submit"><i class="bi bi-search"></i></button> </form> </div> </nav> </header> <section class="py-5 container-fluid"> <h2 class="fw-bolder">正在寻找新家的朋友</h2> <p class="lead">以下是部分可爱的小伙伴们的照片和简介:</p> <div class="row row-cols-1 row-cols-md-3 g-4"> {% for pet in pets %} <div class="col"> <div class="card h-100 shadow-sm"> <img loading="lazy" decoding="async" width="auto" height="180px" alt="{{pet.name}}" src="{{pet.image}}" class="rounded card-img-top img-fluid object-fit-cover"> <div class="card-body position-relative"> <small class="badge bg-warning">{{pet.type}}</small> <h5 class="mt-2 mb-0">{{pet.name}}</h5> <p>{{pet.description|truncate(96)}}</p> <footer class="position-absolute bottom-0 start-0 end-0 small text-end opacity-75"> 发布时间:<time datetime="{{pet.publish_date}}">{{pet.publish_date|date('Y-m-d')}}</time> </footer> </div> </div> </div> {% endfor %} </div> </section> ``` 此处展示了如何构建一个简单的卡片列表来展示每只可供领养的动物基本信息,包括图片、名字、种类描述等字段。当然这只是一个静态的例子,真实环境中还需要结合后端API接口获取最新的动态数据填充到这些占位符位置上。 ##### 地图集成与联系表格 对于想要实地考察或者进一步咨询的人士来说,在线地图指引是非常实用的功能之一。借助第三方的地图服务商(像高德开放平台、腾讯位置服务SDK或者是百度LBS云等等),能够轻松地把机构所在地标注出来让用户快速找到具体方位。另外还可以加入留言反馈机制,鼓励潜在领养人留下联系方式和个人偏好倾向,便于后续跟进沟通工作。 ```html <div style="height: 400px;overflow:hidden;" id="mapContainer"></div> <script type="application/javascript"> const map = new AMap.Map('mapContainer', { zoom: 15, center: [longitude, latitude], }); AMap.plugin(['AMap.ToolBar'], function () { var toolbar = new AMap.ToolBar(); map.addControl(toolbar); }); </script> ``` 上述代码段演示了怎样初始化一张带有工具栏控件的地图实例,并将其渲染至指定ID名为`mapContainer`的DOM节点内。至于具体的经纬度坐标参数则应根据实际情况调整设定。 最后别忘了准备一份详尽的帮助指南,告诉访客在整个过程中需要注意哪些事项,从提交申请材料到最后签订协议书都有清晰的操作指示,让每个人都可以顺利参与到这项充满爱心的社会公益活动中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值