网页中Google Map的使用

要在自己的网页中嵌入地图,常用的方法可以归纳为以下几种:

1、最简单的方法 ——使用谷歌地图主页的"链接"

      如果你只需要在自己的页面上显示某个特定范围的地图,比如你的公司所在地,但是不需要在地图上添加任何额外的内容,比如标记、折线等等,那么,使用这个方法来嵌入谷歌地图是最简单的。

      登录谷歌地图主页,定位你需要显示的范围后,点击地图左上角的“链接”,会出现一个信息框,给出两个输入框,把第二个输入框中的内容拷贝到你的页面上就可以了。

     

      其实,这段嵌入代码就是一个iframe的声明,所以,虽然地图主页提供一个自定义地图并预览的功能,但是只能自定义地图的大小,如果需要的话,我们完全可以通过手动修改这个iframe声明来实现更多的自定义,比如,给这段iframe加上自定义的样式。

2、最精简的方法 ——使用谷歌静态地图

      如果你需要显示某个特定范围的地图,而且需要在地图上加上一些标记、折线。但是,你并不在乎你网页上的地图能否拖拽,那么,这个静态地图应该就是你需要的了。

      所谓静态地图,意思就是你在页面上嵌入的其实只是一个GIF图片,这个GIF图片是你通过URL从谷歌动态获取的,这样的嵌入地图就有别于我们常用的“动态”地图了,而且,加载这样的地图,比加载一个完整的地图要快捷的多。

      要在你的页面上使用这样的静态地图,只需要使用一个img标签,把这个标签的src属性指定为谷歌静态地图的url就可以了。

      看一个简单的静态地图,以下示例包含纽约市区静态地图图片的网址,如下所示:

http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap
&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318
&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false

      在这个URL中,你可以编辑center、zoom、size这些参数来指定地图的中心点、缩放级别、地图大小等等,当然,如果需要在地图上添加标记、折线,你还可以加上对应的参数。不过,不用担心你要记住这么多参数,这里有一个定制静态地图的向导,简单的几步就可以得到你需要的URL了。

       请注意,您并非一定要使用密钥(虽然我们推荐这么做)。本文中的示例都不包含 key 参数,因此将适用于剪切粘贴该代码的所有用户。

      严格来说,谷歌静态地图也是谷歌地图API的一种,所以,使用静态地图是需要你的谷歌地图API密钥的,如果你之前定义过地图API的密钥,直接copy过来就可以了,不需要再去注册。

3、最自由的方法 --使用谷歌地图API

      如果上面两种方式都不能满足你的需求,那么,就来试试 谷歌地图API吧。虽然谷歌地图API已经细分为JavaScript、Flash、Earth、Static等等多个版本,但是,在我看来,JavaScript API是谷歌地图API的根本,所以,在我的博客里,除非特别指明,说到谷歌地图API都是指谷歌地图JavaScript API。使用这个API,你可以用你愿意的任何可行的表现形式在地图上展现你的数据,甚至可以把你自己的地图做的比谷歌地图还漂亮。

      要使用这个API在页面中嵌入地图,简单的步骤就是:

      1)使用JavaScript标签导入地图API类库;

      2)在页面上定义一个装载地图的元素,通常使用一个div标签,指定width和height;

      3)在你的JavaScript代码中new GMap2(document.getElementById("your map container's id"));

      4)使用GMarker、GPolyline等API中提供的类定制你要在地图上添加的标记、折线等等。

一个简单的完整HTML如下:   

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0; padding: 0 }
      #map_canvas { height: 100% }
    </style>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE">
    //sensor 是否会使用 GPS 定位器等传感器来确定用户的位置,必须将该值明确设为 true 或 false
    </script>
    <script type="text/javascript">
//初始化地图,使用Map类
      function initialize() {
        var mapOptions = {
          center: new google.maps.LatLng(-34.397, 150.644),   //指地图定位的坐标,需要LatLng对象,对象参数就是纬度和经度
          zoom: 8,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"),    //地图div对象的id名,这个div要指明高度和宽度要不地图没法初始化
            mapOptions);
      }
    </script>
  </head>
  <body onload="initialize()">
    <div id="map_canvas" style="width:100%; height:100%"></div>
  </body>
</html>

地图类型 google.maps.MapTypeId

  • ROADMAP,用于显示 Google 地图的默认、普通 2D 图块。
  • SATELLITE,用于显示拍摄的图块。
  • HYBRID,用于同时显示拍摄的图块和重要地图项(道路、城市名)的图块图层。
  • TERRAIN,用于显示自然地形图块,其中包含海拔和水体地图项(山脉、河流等)。

    除了上面说的这几种方法,其实还有一些比较少用的方法也可以在网页中嵌入地图,比如比如使用Google Gadget API,我在博客右边栏嵌入的地图使用的就是Gadget API。

Marker类、InfoWindow

添加自定义的marker:

var userMarker = new google.maps.Marker( {
        position : new google.maps.LatLng(30,120),
        map : map,
        title : "鼠标悬浮时提示的信息",
        icon : "图片位置字符串"
    });
var yourInfoWindow;

(function(userMarker) {
    google.maps.event.addListener(userMarker, 'click', function() {
        if (!yourInfoWindow) {
            yourInfoWindow = new google.maps.InfoWindow( {});
        }
        yourInfoWindow.setContent(userMarker.title);
        yourInfoWindow.open(map, userMarker);
    });
})(userMarker);

1、Marker类是为地图上添加类似小图钉似的提示位置用的东西 

2、Marker需要设置坐标和地图对象来初始化

3、同一个Marker对象要重用时使用下面语句重新使用

userMarker.setMap(null);  

4、最后是为marker对象添加点击事件,使用的是嵌套写法(用在for循环里更好使) 

5、infowindow是弹出的那个大窗体,他的setContent方法是支持html和css代码的,可以放进去div或table设置样式

LatLngBounds类
Map范围自适应:

var bounds = new google.maps.LatLngBounds();
bounds.extend(new google.maps.LatLng(30,120));
//为新的结果创建marker
for ( var i in member) {
    bounds.extend(new google.maps.LatLng(member[i][2],member[i][3]));
    var marker = new google.maps.Marker( {
        position : new google.maps.LatLng(member[i][2],    member[i][3]),
        map : map,
        title : "title",
        icon : "imageAddress"
    });
    markers.push(marker);
    //为marker添加infowindow,添加点击事件
    (function(i, marker) {
        google.maps.event.addListener(
            marker,
            'click',
            function() {
                if (!infoawindow) {//单例infowindow
                    infoawindow = new google.maps.InfoWindow(
                                                        {});
                }
                infoawindow.open(map, marker);
        });
    })(i, marker);
}
map.fitBounds(bounds);//这句最重要

Geocoder类
提交地址字符串返回经纬度(很好用的功能),查询全靠它

    如果你不需要在自己的页面中嵌入地图,或者,你没有自己的网站,那么,使用Mapplet API也是一个不错的创建你自己的地图的方式。这是一个可以在谷歌地图主页上“我的地图”中运行的小程序,它的API其实就是谷歌地图API的一个子集,因为要在谷歌地图主页中嵌入,所以与谷歌地图API稍稍有一些不同。详细情况可以参考一下Mapplet API的开发文档

var geocoder = new google.maps.Geocoder();
    geocoder.geocode( {
        'address' : "格式可以是不分割的:北京市东城区东直门,或北京市,东城区,东直门"
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            myLatLng = results[0].geometry.location;
            //results数组里有很多有用的信息,包括坐标和返回的标准位置信息
        } else {
            alert(interGeoAnalysisFailed);
        }
    });

地图导航服务

var map;    //地图对象    
var mode = google.maps.DirectionsTravelMode.DRIVING;    //谷歌地图路线指引的模式
var directionsDisplay = new google.maps.DirectionsRenderer();    //地图路线显示对象
var directionsService = new google.maps.DirectionsService();    //地图路线服务对象
var directionsVisible = false;    //是否显示路线
directionsDisplay.setMap(null);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));    //将路线导航结果显示到div中    
var request = {origin: findLatLng, destination: marker.position, travelMode: mode, optimizeWaypoints: true, avoidHighways: false,avoidTolls: false};
directionsService.route
(
    request,
    function(response, status)
    {
           if (status == google.maps.DirectionsStatus.OK)
           {
                   directionsDisplay.setDirections(response);
           }
       }
);
directionsVisible = true;

详细情况和进一步的参考https://developers.google.com/maps/documentation

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Google Map API V3是一种用于在Web应用程序嵌入和操作Google地图的编程接口。它提供了一组丰富的功能和工具,可以帮助开发者在自己的网站或应用实现地图和位置相关功能。 使用Google Map API V3,开发者可以轻松地在网页上显示一个互动的地图,包括地图图块、标记、信息窗口、图形和覆盖物等元素。开发者还可以通过调用API提供的方法,获取地图的坐标和视图信息,以及监听用户交互事件。 除了基本的地图显示功能外,Google Map API V3还提供了许多高级功能。例如,开发者可以使用地图的几何库进行位置计算和空间分析,可以实现地图上的地理编码和逆地理编码等操作。API还支持在地图上绘制路径和多边形,并可以使用地图上的各种工具控制地图的交互和视图。 Google Map API V3还与其他Google服务集成得很好。例如,开发者可以通过API调用Google Places服务,实现根据关键字搜索地点和显示地点详细信息的功能。还可以使用API调用Google Street View服务,在地图上显示街景图像。 总而言之,Google Map API V3为开发者提供了一个强大而灵活的工具,可以方便地在自己的网站或应用集成和操作Google地图,实现丰富的地图和位置相关功能。无论是创建一个简单的地图显示页面,还是实现复杂的地理应用,Google Map API V3都是一个很好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值