zoukankan      html  css  js  c++  java
  • JQuery Maps

    Google Map应用在网站之上已经从单一的浏览性慢慢转化为服务概念(同时也大大增强用户体验度)

    如下利用 Google Map Api ------ 简单实现地图网站应用。(仅参考) 

    实现目标:

    1.在地图中进行地点标注

    2.选择标注时,出现相关信息

    3.点击页面上的测试按钮,显示相关的地点标注信息

    Html Code:

    <body > 
        <h1>Google Map</h1> 
        <div id="Googlemap" style=" 70%; height: 480px; float: left; border: 1px solid black;"> 
        </div> 
        <input type="button" id="btnTest" title="test" value="显示第二店信息" />
     
    </body>

    前期准备:

    • 注册Google Api Key
    • 引用Google Api 脚本
     <script language="javascript" type="text/javascript" src=http://ditu.google.com/maps?file=api&v=2&key=XXX></script>
      
    • 在地图中进行地点标注

                    如果要实现地点标注,首先要准备数据

                    数据如下:

                 var message = [ 
                             { "X": "31.223822", "Y": "121.336311", "Content": { "Title": "别克4s店", "Context": "北翟路1571号"} }, 
                             { "X": "31.175449", "Y": "121.395134", "Content": { "Title": "别克4s店", "Context": "虹梅路1601号"} }, 
                             { "X": "31.095711", "Y": "121.456276", "Content": { "Title": "别克4s店", "Context": "龙吴路"} }, 
                             { "X": "31.078356", "Y": "121.395607", "Content": { "Title": "别克4s店", "Context": "沪闵路"} }, 
                             { "X": "31.200939", "Y": "121.365707", "Content": { "Title": "别克4s店", "Context": "哈密路1231号"} } 
                                         ]; 

                   然后调用

               addOverlay(overlay:GOverlay) 将叠加层添加到地图中,并触发 addoverlay 事件。

                      var point = new GLatLng(X, Y); 
                      var newMkr = GMaps.prototype.CreateMarker(point, i);
                      map.addOverlay(newMkr);
    • 选择标注时,出现相关信息

                     在标注点上显示相关信息,需要调用openInfoWindowHtml。

              openInfoWindowHtml(content:String, opts?:GInfoWindowOptions)
                    通过标记图标打开地图信息窗口。信息窗口的内容为包含 HTML 文本的字符串。只适用于 GInfoWindowOptions.maxWidth 选项。

    • 点击页面上的测试按钮,显示相关的地点标注信息

                    实现这点只需要定义一个Trigger即可

               GEvent.trigger(XX, "click");

    代码解析:(看看注释即可)

            var message = [
                               { "X": "31.223822", "Y": "121.336311", "Content": { "Title": "别克4s店", "Context": "北翟路1571号"} },
                               { "X": "31.175449", "Y": "121.395134", "Content": { "Title": "别克4s店", "Context": "虹梅路1601号"} },
                               { "X": "31.095711", "Y": "121.456276", "Content": { "Title": "别克4s店", "Context": "龙吴路"} },
                               { "X": "31.078356", "Y": "121.395607", "Content": { "Title": "别克4s店", "Context": "沪闵路"} },
                               { "X": "31.200939", "Y": "121.365707", "Content": { "Title": "别克4s店", "Context": "哈密路1231号"} }
                          ];
     
            var GMaps = function() {
            };
     
            GMaps.prototype = {
     
                //定义标记容器
                makers: [],
     
     
                //定义鹰眼图标
                SetIcon: function(index) {
                    var markerIcon = new GIcon();
                    markerIcon.image = "../Images/" + index + ".png";
                    return markerIcon;
                },
     
                //设置地图中心
                SetCenter: function(lats, lngs) {
                    var maxLat = Math.max.apply(null, lats),
                    maxLng = Math.max.apply(null, lngs),
                    minLat = Math.min.apply(null, lats),
                    minLng = Math.min.apply(null, lngs),
                    lat = minLat + (maxLat - minLat) / 2,
                    lng = minLng + (maxLng - minLng) / 2,
                    //定义缩放率
                    bounds = new GLatLngBounds(new GLatLng(minLat, minLng), new GLatLng(maxLat, maxLng));
                    map.setCenter(new GLatLng(lat, lng), map.getBoundsZoomLevel(bounds));
                },
     
                //定义标记内容
                CreateMarker: function(latlng, index) {
                    if (!latlng) return;
                    var marker = new GMarker(latlng, { icon: GMaps.prototype.SetIcon(index) });
                    marker.id = index;
     
                    GEvent.addListener(marker, "click", function() {
                        var myHtml = new Array();
                        myHtml.push("<span id=\"Info\">");
                        myHtml.push("<h2>" + message[index].Content.Title + "</h2><br />");
                        myHtml.push(message[index].Content.Context + "<br />");
                        myHtml.push("</span>");
                        map.openInfoWindowHtml(latlng, myHtml.join(''));
                    });
     
                    return marker;
                },
     
                //设置触发标记内容显示
                TriggerMaker: function(maker) {
                    GEvent.trigger(maker, "click");
                },
     
                //创建地图
                BuildMap: function(map) {
                    //判断当前浏览器是否支持google 地图
                    if (GBrowserIsCompatible()) {
                        //定义经纬度容器
                        var lats = [], lngs = [];
     
                        //从地图中删除所有叠加层
                        map.clearOverlays();
     
                        $.each(message, function(i) {
     
                            var point = new GLatLng(message[i].X, message[i].Y);
                            var newMkr = GMaps.prototype.CreateMarker(point, i);
                            if (newMkr) {
                                //存储当前Maker到Makers中,用于在地图之外进行选择
                                GMaps.prototype.makers.push(newMkr);
                                (function(map, newMkr) {
                                        //将叠加层添加到地图中
                                        map.addOverlay(newMkr);
     
                                })(map, newMkr);
                            }
                            //存储所有经纬度用于计算当前显示区域
                            lats.push(message[i].X);
                            lngs.push(message[i].Y);
                        });
     
                        //设置地图中心区域
                        GMaps.prototype.SetCenter(lats, lngs);
     
                        map.enableDoubleClickZoom();
                        map.enableScrollWheelZoom();
                        map.enableContinuousZoom();
     
                        map.addControl(new GLargeMapControl())
                        map.addControl(new GOverviewMapControl());
                        map.addControl(new GScaleControl());
                        map.addControl(new GMapTypeControl());
                    }
                    else {
                        alert("No Support Google Map");
                    }
                }
            }

    最后调用代码:

            var map = new GMap2(document.getElementById("Googlemap"));
     
            var mapView = new GMaps();
     
            mapView.BuildMap(map);
     
            $(function() {
     
                $("input[id=btnTest]").click(function() {
                    mapView.TriggerMaker(mapView.makers[1]);
                    if (document.documentElement.scrollTop > 250) document.documentElement.scrollTop = 170;
                });
            });

    最终实现效果:

    image

    资源:

    Google 地图 API 开发指南

    待续  。。。。有关于Bing Maps的话题

     
    7
    0
     
    (请您对文章做出评价)
  • 相关阅读:
    Coursera Algorithms week3 快速排序 练习测验: Nuts and bolts
    快速排序及三向切分快排——java实现
    自顶向下(递归)的归并排序和自底向上(循环)的归并排序——java实现
    希尔shell排序——java实现
    插入排序——java实现
    选择排序——java实现
    Coursera Algorithms week3 归并排序 练习测验: Shuffling a linked list
    单向链表的归并排序——java实现
    Coursera Algorithms week3 归并排序 练习测验: Counting inversions
    Coursera Algorithms week2 栈和队列 练习测验: Stack with max
  • 原文地址:https://www.cnblogs.com/jcomet/p/1693538.html
Copyright © 2011-2022 走看看