跳到正文
当下的七炎
返回

google-maps网页api开发

编辑文章

通过下面几个例子,一起走进google maps 网页api开发 PS:我查了下V3的api有的说需要key,有的说不需要key,根据文档貌似是需要key的,但是我们公司的的确没用key(然后访问量起来就挂了)。。,以下的预览地址(服务端环境)会提示需要key,拷贝下来本地运行都是可以的

测试数据坐标是我随便写的,不必纠结北京香山公园怎么定位到上海了

0-初始化一个地图

// initMap就是加载后的回调函数
    // 注意和echart一样mainMapLayer需要给宽度和高度地图才能显示出来
        function initMap() {
            console.log('common in initMap');
            var myOptions = {
                zoom: 11,
                center: new google.maps.LatLng(31.22171, 121.352856),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("mainMapLayer"), myOptions);
        }
    //PS:谷歌地图这个地址在北京,国内可以正常使用http://ditu.google.cn/maps/api/js

预览地址 :点击访问

1-添加标记

    var myCenter=new google.maps.LatLng(31.22171, 121.352856);

            var myOptions = {
                zoom: 11,
                center: myCenter,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("mainMapLayer"), myOptions);

            var marker=new google.maps.Marker({
                position: new google.maps.LatLng(31.22171, 121.30),
                map: map,
                title:"Hello google Map!"
              });

预览地址:点击访问

1.1-添加多个标记

var myCenter = new google.maps.LatLng(31.22171, 121.352856);

            var myOptions = {
                zoom: 11,
                center: myCenter,
                // mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("mainMapLayer"), myOptions);
            //地图的标记和地图中心不能太远,否则会看不到
            // var marker = new google.maps.Marker({
            //     position: new google.maps.LatLng(31.22171, 121.30),
            //     map: map,
            //     title: "Hello google Map!"
            // });
            var markers=[];
            var neighborhoods = [{
                lat: 31.22071,
                lng: 121.302800
            }, {
                lat: 31.22111,
                lng: 121.352001
            }, {
                lat: 31.22371,
                lng: 121.392100
            }, {
                lat: 31.22571,
                lng: 121.372856
            }, ];

            for (var i = 0; i < neighborhoods.length; i++) {
                addMarkerWithTimeout(neighborhoods[i], i * 500);
            }

            function addMarkerWithTimeout(position, timeout) {
                window.setTimeout(function() {
                    markers.push(new google.maps.Marker({
                        position: position,
                        map: map,
                        animation: google.maps.Animation.DROP
                    }));
                }, timeout);
            }

预览地址:点击访问

2-添加信息框

var myCenter = new google.maps.LatLng(31.22171, 121.352856);

            var myOptions = {
                zoom: 11,
                center: myCenter,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("mainMapLayer"), myOptions);

            var marker = new google.maps.Marker({
                position: new google.maps.LatLng(31.22171, 121.30),
                map: map,
                title: "Hello google Map!"
            });
            var contentString = '<div id="content">' +
                '<div id="siteNotice">' +
                '</div>' +
                '<div id="bodyContent">' +
                '<p>我是支持HTML的提示框 </p>' +
                '<input type="button" value="查看路线">' +
                '</div>' +
                '</div>';
            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });
            marker.addListener('click', function() {
                infowindow.open(map, marker);
              });

预览地址:点击访问

2.1-添加多个信息框

var myCenter = new google.maps.LatLng(31.22171, 121.352856);

            var myOptions = {
                zoom: 11,
                center: myCenter,
                // mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("mainMapLayer"), myOptions);

            var neighborhoods = [{
                lat: 31.22071,
                lng: 121.302800,
                title:"上海迪士尼",
                content :"中国上海市黄浦区方浜中路280号。"
            }, {
                lat: 31.22111,
                lng: 121.352001,
                title:"东京迪士尼乐园",
                content :"日本千叶县浦安市舞浜1-1号。"
            }, {
                lat: 31.22371,
                lng: 121.392100,
                title:"北京香山公园",
                content :"北京市海淀区买卖街40号。"
            }, {
                lat: 31.22571,
                lng: 121.372856,
                title:"襄阳古隆中",
                content :"湖北省襄阳市襄城区001县道隆中路6号。"
            } ];

            for (var i = 0; i < neighborhoods.length; i++) {
                addMarkerWithTimeout(neighborhoods[i]);
            }

            function addMarkerWithTimeout(position) {
                markers.push(new google.maps.Marker({
                    position: position,
                    map: map,
                    title:"hello google map"
                }));

            }
            var contentString = '<div id="content">' +
                '<div id="siteNotice">{{title}}</div>' +
                '<div id="bodyContent">' +
                '<p>{{content}} </p>' +
                '<input type="button" value="查看路线">' +
                '</div>' +
                '</div>';
            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });
            var j = 0;
            for (j = 0; j < markers.length; j++) {
                markers[j].index = j;
                google.maps.event.addListener(markers[j], 'click', function() {
                    var that = this;
                    infowindow.setContent(htmlTpl(contentString,neighborhoods[that.index]));
                    infowindow.open(map, that);
                });
            }


        }
        function htmlTpl(tpl, data) {
            return tpl.replace(/{{(\w+)}}/g, function() {
                return data[arguments[1]];
            });

预览地址:点击访问

3-路线导航

var directionsService = new google.maps.DirectionsService();//service用来请求导航数据

            var directionsDisplay;
            directionsDisplay = new google.maps.DirectionsRenderer();//渲染导航数据
            directionsDisplay.setMap(map);
            directionsDisplay.setPanel(document.getElementById("direction-panel"));

            //出行方式选择
            var aRouteWay = document.querySelectorAll('.route_way')[0];
            var aAWay = aRouteWay.querySelectorAll('a');
            aAWay.forEach(function(item){
                item.addEventListener('click',function(){
                    aAWay.forEach(function(item2){
                        item2.className="";
                    })
                    this.className="current";
                    var way = this.dataset.way.toUpperCase();
                    calcRoute(way);
                })
            })
            function calcRoute(way) {
              var start = document.getElementById('start_point').value;
              var end = document.getElementById('end_point').value;
              var request = {
                origin: start,
                destination: end,
                travelMode: google.maps.DirectionsTravelMode[way]
              };
              directionsService.route(request, function(response, status) {
                if (status == google.maps.DirectionsStatus.OK) {
                  directionsDisplay.setDirections(response);
                }
              });
            }

预览地址 :点击访问

3.1-多标记路线导航

代码太长,我就直接放地址吧 预览地址:点击访问

3.2-多标记和路线导航分离

预览地址:点击访问

相关链接

google maps 文档地址


编辑文章
分享这篇文章:

评论

使用 GitHub 账号登录后即可评论


上一篇
webpack-神奇的前端工具
下一篇
字符串还可以这样玩