zoukankan      html  css  js  c++  java
  • google map javascript api v3 例子

    之前一直用百度map,但如果是国外的项目就需要用google地图。由于在国内屏蔽了google地图的服务,因此调用的是一个国内地址(开发用)。这个地址没有用key,语言设置也还是中文的。

    //-------------------------------------------------------------------------------------------------

    备注:网上很多国内的例子还是用v2的接口,差异还是很大的,v3的接口感觉更加接近js的风格,很多参数都直接是json。

    还有关于移动端的原生API和web API区别,我在github上看到一篇文章是这样解释的:原生SDK在移动端会好于web API, 因为web API获取GIS地图数据时,是获取一张张的图片然后在前端进行拼接,而SDK是获取地图数据后在前端重画的,其获取数据会小于web api. 当然我想这个解释话,对于卫星图应该两者无差。

    //--------------------------------------------------------------------------------------------------

    例子中实现了google几个核心类的主要功能,包括:

    1、在初始化时,定位到正向解析地址,这里是定位到自由女神像;

    2、在地图中间位置初始化一个可拖拽的图标,绑定拖拽结束时间,结束后通过地址逆解析,弹出一个信息提示框;

    3、在地图上绑定鼠标右击事件,每个右击事件新增一个图标;

    4、在地图上绑定鼠标双击事件,双击后地图移动到初始位置(中间);

    代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
        <script type="text/javascript" src="https://ditu.gdgdocs.org/maps/api/js?v=3.exp&sensor=false"></script>
        <script type="text/javascript">
            $(function() {
                initialize();
            });
    
            var map = null;
    
            function initialize() {
    
                var geocoder = new google.maps.Geocoder();
    
                //地址正向解析
                geocoder.geocode({
                    'address': 'Liberty Island, 10004 New York Harbor'
                }, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        var myOptions = {
                            zoom: 12,
                            center: results[0].geometry.location,
                            mapTypeId: google.maps.MapTypeId.ROADMAP,
                        };
    
                        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
                        //定义标示   
                        var marker = new google.maps.Marker({
                            map: map,
                            position: results[0].geometry.location,
                            title: 'location',
                            draggable: true
                        });
                        marker.setMap(map);
    
                        google.maps.event.addListener(marker, "dragend", function(event) {
                            //逆地址解析               
                            geocoder.geocode({
                                'location': event.latLng
                            }, function(results, status) {
                                if (status == google.maps.GeocoderStatus.OK) {
                                    var html = '<div>' + results[0].formatted_address + '</div>';
    
                                    var infowindow = new google.maps.InfoWindow({
                                        content: html
                                    });
                                    infowindow.open(map, marker);
                                }
                            });
    
                            //单击后在地图上增加一个标示
                            google.maps.event.addListener(map, 'click', function(event) {
                                var marker1 = new google.maps.Marker({
                                    map: map,
                                    position: event.latLng
                                });
                                marker1.setMap(map);
                            });
    
                            //添加双击事件,返回地图中央
                            google.maps.event.addListener(map, "dblclick", function(evvent) {
                                var center = map.getCenter();
                                var lat = center.lat();
                                var lng = center.lng();
                                var latlng = new google.maps.LatLng(lat, lng);
                                map.setCenter(latlng);
    
                            })
                        });
                    }
                });
            }
    
        </script>
    </head>
    <body>
        <div style=" 100%; float: left;">
            <div style=" 100%; height: 660px; border: 1px solid #C0C0C0;" id="map_canvas">
            </div>
        </div>
    </body>
    </html>
  • 相关阅读:
    BZOJ4889: [TJOI2017]不勤劳的图书管理员
    BZOJ3932: [CQOI2015]任务查询系统
    BZOJ1926: [Sdoi2010]粟粟的书架
    POJ 3281 Dining(网络流-拆点)
    POJ 1273 Drainage Ditches(网络流-最大流)
    POJ 1325 Machine schedine (二分图-最小点覆盖数=最大匹配边数)
    HDU 1281 棋盘游戏
    HDU2255 奔小康赚小钱钱(二分图-最大带权匹配)
    HDU 2444 The Accomodation of Students (二分图存在的判定以及最大匹配数)
    POJ 3660 cow contest (Folyed 求传递闭包)
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/4638147.html
Copyright © 2011-2022 走看看