zoukankan      html  css  js  c++  java
  • google maps v3 初印象

    无疑google map、google earth 应用十分广泛。也被人们熟知,google maps已经推出第三版本。google maps v3与老版本变化不大,如果以前用过老版本的朋友肯定知道,在自己开发的网站中嵌入或使用google map必须要自己申请google map api key但是在天国申请这个码并不容易。但是以开源著称的google 在其google map v3 中取消了应用码。使得开发、应用google map变得更容易。

    好啦。废话了一通后进入本次的主体。体验一下google map v3的开发。由于刚刚接触v3 maps 所以只学会了点皮毛。

    一、加载地图

    首先要在网站或页面中引入、开发google map就必须要在代码中添加对google maps的api引用。格式如下:

    <script src="http://maps.google.com/maps/api/js?v=3&sensor=false&language=cn" type="text/javascript"></script>

    我们看到在引入google map文件时添加了三个参数:

        1) v=3  这个参数主要标识请求的地图版本为第三版。如果想要引入第二版地图需要将请求文件改为以下格式。

    <script src="http://ditu.google.com/maps?file=api&v=2&key=你注册的API密钥" type="text/javascript"></script>

        2)sensor=false 这个参数是设置是否使用传感器确定用户位置。false 表示不开启。由于浏览器的安全设置即使我们把这一参数设置为true当加载地图时也会被浏览器拦截,并询问你是否使用。

        3)language=cn 这个参数主要选择地图显示的语言为中文。

    但是只引入文件还不会加载地图。如果要加载地图,我们必须首先为加载地图提供容器并对容器设置width、height两个属性来确定加载地图的区域。

    <div id="maps" style="300px; height:400px;">

    有了容器后我们还必须创建一个地图实例。

    1. <script type="text/javascript">
    2. function drawMaps()
    3. {
    4. var mycenter = new google.maps.LatLng(30.82796,120.1787811);
    5. var map = new google.maps.Map(document.getElementById('maps'), {
    6. zoom: 6,
    7. center: mycenter,
    8. mapTypeId: google.maps.MapTypeId.ROADMAP
    9. });
    10. }
    11. </script>
    12. <body onload="javascript:drawMaps();">
    13. <div id="maps" style="300px; height:400px;">
    14. </div>
    15. </body>

    运行后的效果如图:

    下面来对代码分别解释一下:

    第4行实例化一个坐标LatLng方法有两个参数分别为纬度、经度。注意顺序不要颠倒。如果知道某一地区想要获取此地区的坐标,你可以在google map中查到该位置。然后点击右键选择这是什么。此时会在google map中生成一个标记将鼠标放在该标记上就会显示该位置的经纬度。

    第5行创建地图实例,构建实例时需要至少一个参数,第一个参数为加载地图的容器,第二个参数为一些属性列表。

    在属性列表中第6行设置缩放级别,数字越大地图越详细、包含的区域面积越小。这一点与v2正好相反,需要注意。

    第7行设置地图的加载中心位置。

    第8行设置地图类型(mapTypeId)此参数必须显示设置。因为在v3中此属性不再带有默认值。

    mapTypeId的有效参数如下:

    google.maps.MapTypeId.HYBRID      该地图类型显示卫星图像上的主要街道透明图层

    google.maps.MapTypeId.ROADMAP   该地图类型显示普通街道地图

    google.maps.MapTypeId.SATELLITE    该地图类型显示卫星图像

    google.maps.MapTypeId.TERRAIN     该地图类型显示带有自然特征的地图

    还需注意的是第12行对初始函数的调用。当然你也可以使用window.onload(rawMaps)事件。

    说明:如果出现未加载的情况,首先要对代码进行校对。如果代码编写无误,并出现Uncaught TypeError: Cannot read property 'LatLng' of undefined错误则有可能是网速太慢造成的响应超时。

    二、添加标记

    当我们在自己的网站嵌入google map时我们大多是希望表示某一地区的,并在这一位置添加说明窗口。为了达到这一效果我们就必须对加载的地图上创建标记。

    创建的标记一般包含以下几部分:

    标记图片-->用于醒目表示某位置

    标记阴影-->为了使标记更加有层次感

    信息窗口-->用于标识该标记的内容

    信息窗口的显示方式-->用于设置信息窗口的显示方式主要有两种:加载地图后自动显示或者点击标记后显示。

    对于标记图片google已经提供了大量的代表性的图片如:comany.png、hotel.png、factory.png....等。当然我们可以使用自己制作的图片。代码如下:

    var image_company = 'http://google-maps-icons.googlecode.com/files/company.png';

    标记阴影图片我们可以使用google已经提供好的图片,当然也可以使用自己的图片。代码如下:

    var shadow = new google.maps.MarkerImage('http://google-maps-icons.googlecode.com/files/shadow.png');

    信息窗口并不是一个标记的必须组成部分。但是我建议对每个标记都添加信息窗口,这样可以使其他人更容易明白标记地址的原因后其他信息。代码如下:

    1. var infowindow = new google.maps.InfoWindow({
    2. maxWidth:200,
    3. content: '<div class="mapinfo"><h6>信息窗口</h6><li>这个是备注信息</li><li>地址:天津</li> <li>E-Mail:<a href="#">mail@test.com</a></li></div>'
    4. });

    从以上代码中可以明白创建信息窗口实例时要设置最大宽度,窗口的内容。窗口的内容可以使用html标记。

    信息窗口的显示方式:

       加载地图后就显示信息窗口:

    infowindow.open(map, marker);

      点击标记后显示窗口:

    google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
    });

    完整代码:

    /*----------- 标记图片(factory.png company.png school.png hotel.png) ------------*/
    var image_company = 'http://google-maps-icons.googlecode.com/files/company.png';
    /*----------- 标记的阴影图片 ----------------------------------------------------*/
    var shadow = new google.maps.MarkerImage('http://google-maps-icons.googlecode.com/files/shadow.png');
    /*----------- 添加标记 -----------------------------------------------------------*/
    var marker = new google.maps.Marker({
    position: mapCenter,
    map: map,
    icon: image_company,
    shadow: shadow,
    title: '标记'
    });
    /*----------- 添加信息窗口 ----------------------------------------------------*/
    var infowindow = new google.maps.InfoWindow({
    maxWidth:200,
    content: '<div class="mapinfo"><h6>测试</h6><li>这个是备注信息</li><li>地址:天津</li> <li>E-Mail:<a href="meilto:ss@ss.com">ss@ss.com</a></li></div>'
    //size: new google.maps.Size(80,30),
    });
    /**---------- 信息窗口的显示方式 ------------------------------------------------*/
    infowindow.open(map, marker);//地图加载完毕后即显示
    google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
    });//点击标记后显示信息窗口

    显示效果:

  • 相关阅读:
    数据类型装换
    变量及数据类型
    27 网络通信协议 udp tcp
    26 socket简单操作
    26 socket简单操作
    14 内置函数 递归 二分法查找
    15 装饰器 开闭原则 代参装饰器 多个装饰器同一函数应用
    12 生成器和生成器函数以及各种推导式
    13 内置函数 匿名函数 eval,exec,compile
    10 函数进阶 动态传参 作用域和名称空间 函数的嵌套 全局变量
  • 原文地址:https://www.cnblogs.com/shuchun/p/2491007.html
Copyright © 2011-2022 走看看