• Google Map 学习过程中的代码


    <!DOCTYPE html>
    <html>
    <head>
    <title>Simple click event</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
    html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    }
    #map {
    height: 100%;
    }
    #hiddenUI , #showUI , #delUI , #addUI , #removePathUI{
    background-color: #fff;
    border: 2px solid #fff;
    border-radius: 3px;
    box-shadow: 0 2px 6px rgba(0,0,0,.3);
    cursor: pointer;
    float: left;
    margin-bottom: 22px;
    text-align: center;
    }
    #hiddenText , #showText , #delText , #addText , #removePathText{
    color: rgb(25,25,25);
    font-family: Roboto,Arial,sans-serif;
    font-size: 15px;
    line-height: 25px;
    padding-left: 5px;
    padding-right: 5px;
    }
    #showUI , #delUI , #addUI ,#removePathUI{
    margin-left: 5px;
    }
    </style>

    </head>
    <body>
    <div id="map"></div>
    <script>
    // 存储marker
    var markers = [];
    // marker范围
    var bounds = {
    north: 36.104595,
    south: 36.063254,
    east: 120.349731,
    west: 120.428695
    };
    // 具体范围
    var lngSpan = bounds.east - bounds.west;
    var latSpan = bounds.north - bounds.south;

    function initMap() {
    var myLatlng = {lat: -25.363, lng: 131.044};
    var qingdao = {lat: 36.06616, lng: 120.3829};
    var other = {lat: 36.964, lng: -122.015};
    // 自定义样式
    var styles = [
    {
    stylers: [
    { hue: "#00ffe6" },
    { saturation: -20 }
    ]
    },{
    featureType: "road",
    elementType: "geometry",
    stylers: [
    { lightness: 100 },
    { visibility: "simplified" }
    ]
    },{
    featureType: "road",
    elementType: "labels",
    stylers: [
    { visibility: "off" }
    ]
    }
    ];


    // 设置地图样式
    var styledMap = new google.maps.StyledMapType(styles,
    {name: "自定义Map"});
    var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 12,
    center: qingdao,
    rotateControl: true, // 旋转控件 只在放大到一定比例时才可以使用
    // mapTypeId : google.maps.MapTypeId.SATELLITE,// 显示卫星地图
    mapTypeId : google.maps.MapTypeId.ROADMAP, // 道路地图
    heading: 180 // 表示偏离北方的角度
    });
    // 自定义地图样式
    var mapOptions = {
    zoom: 12,
    center: qingdao,
    mapTypeControlOptions: {
    mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
    }
    };
    // 对地图重新设置
    var map = new google.maps.Map(document.getElementById('map'),
    mapOptions);

    // 显示45度图像 0 为不显示
    map.setTilt(45);
    // 设置样式
    map.mapTypes.set('map_style', styledMap);
    // map.setMapTypeId('map_style');

    // 设置地图样式
    // map.setOptions({styles: styles});

    var marker = new google.maps.Marker({
    position: qingdao,
    // map: map, 可是通过 marker.setMap(map);来显示
    title: 'hello marker'
    });

    // 设置显示marker
    // marker.setMap(map); // 设置为空为不显示


    function Control(controlDiv, map) {

    // 隐藏按钮
    var hiddenUI = document.createElement('div');
    hiddenUI.id = 'hiddenUI';
    hiddenUI.title = 'Click to hidden all marker';
    controlDiv.appendChild(hiddenUI);

    // Set CSS for the control interior.
    var hiddenText = document.createElement('div');
    hiddenText.id = 'hiddenText';
    hiddenText.innerHTML = '隐藏标记';
    hiddenUI.appendChild(hiddenText);

    // 显示按钮
    var showUI = document.createElement('div');
    showUI.id = 'showUI';
    showUI.title = 'Click to show all marker';
    controlDiv.appendChild(showUI);

    var showText = document.createElement('div');
    showText.id = 'showText';
    showText.innerHTML = '显示标记';
    showUI.appendChild(showText);

    // 删除按钮
    var delUI = document.createElement('div');
    delUI.id = 'delUI';
    delUI.title = 'Click to delete all marker';
    controlDiv.appendChild(delUI);

    var delText = document.createElement('div');
    delText.id = 'delText';
    delText.innerHTML = '删除标记';
    delUI.appendChild(delText);

    // 添加标记按钮
    var addUI = document.createElement('div');
    addUI.id = 'addUI';
    addUI.title = 'Click to delete all marker';
    controlDiv.appendChild(addUI);

    var addText = document.createElement('div');
    addText.id = 'addText';
    addText.innerHTML = '添加标记';
    addUI.appendChild(addText);

    // 移除线路按钮
    var removePathUI = document.createElement('div');
    removePathUI.id = 'removePathUI';
    removePathUI.title = 'Click to delete path';
    controlDiv.appendChild(removePathUI);

    var removePathText = document.createElement('div');
    removePathText.id = 'removePathText';
    removePathText.innerHTML = '去除路线';
    removePathUI.appendChild(removePathText);

    // 隐藏所有标记
    hiddenUI.addEventListener('click', function() {
    setMapOnAll(null);
    });
    // 显示所有标记
    showUI.addEventListener('click', function() {
    setMapOnAll(map);
    });
    // 清除所有标记
    delUI.addEventListener('click', function() {
    setMapOnAll(null);
    markers = [];
    });
    // 添加一个随机标记
    addUI.addEventListener('click', function() {
    randomMarker(map);
    });
    // 去除路线
    removePathUI.addEventListener('click', function() {
    flightPath.setMap(null);
    workStart.setMap(null);
    workEnd.setMap(null);
    })

    }
    var centerControlDiv = document.createElement('div');
    var centerControl = new Control(centerControlDiv, map);
    // centerControlDiv.index = 1;
    centerControlDiv.style['margin-top'] = '10px';
    map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv);



    // 划折线
    var flightPlanCoordinates = [
    {lat: 36.075620815001415, lng: 120.43020844459534},
    {lat: 36.074025246504746, lng: 120.4285454750061},
    {lat: 36.069949462636, lng: 120.43118476867676},
    {lat: 36.06604691846644, lng: 120.42285919189453},
    {lat: 36.074025246504746, lng: 120.4139757156372},
    ];
    var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    geodesic: true,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
    });

    flightPath.setMap(map);

    var workStart = new google.maps.Marker({
    position: flightPlanCoordinates[0],
    label: "起",
    title: "上班起点",
    map: map
    });
    var workEnd = new google.maps.Marker({
    position: flightPlanCoordinates[(flightPlanCoordinates.length-1)],
    label: "终", // label 只显示第一个字符
    title: "上班终点",
    map: map
    });

    // 绘制多边形
    var triangleCoords = [
    {lat: 36.06602136399105, lng: 120.35249282982409},
    {lat: 36.082132409147086, lng: 120.42076576221541},
    {lat: 36.10016285436, lng: 120.3873546955059},
    {lat: 36.06602136399105, lng: 120.35249282982409},
    ];

    // Construct the polygon.
    var bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: '#32CD32',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#3CB371',
    fillOpacity: 0.35
    });
    bermudaTriangle.setMap(map);

    // 绘制矩形
    var rectangle = new google.maps.Rectangle({
    draggable: true, // 是否可拖动
    editable: true, // 是否可编辑
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35,
    map: map,
    bounds: {
    north: 36.114595,
    south: 36.104595,
    east: 120.369731,
    west: 120.349731
    }
    });
    // 绘制圆形
    var cityCircle = new google.maps.Circle({
    draggable: true, // 是否可拖动
    editable: false, // 是否可编辑
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35,
    map: map,
    center: qingdao,
    radius: 600 // 单位米
    });


    // var marker = new google.maps.Marker({
    // position: myLatlng,
    // map: map,
    // title: 'Click to zoom'
    // });

    // map.addListener('center_changed', function() {
    // // 3 seconds after the center of the map has changed, pan back to the
    // // marker.
    // window.setTimeout(function() {
    // map.panTo(marker.getPosition());
    // }, 3000);
    // });

    // map.addListener('zoom_changed', function(){
    // alert('当前坐标:'+JSON.stringify(myLatlng)+' 缩放级别:'+map.getZoom());
    // });

    // marker.addListener('click', function() {
    // map.setZoom(8);
    // map.setCenter(marker.getPosition());
    // });

    // 设置窗口
    var infowindow = new google.maps.InfoWindow({
    content : "<p>改变缩放级别</p>",
    position : qingdao
    });
    // 开启窗口
    infowindow.open(map);
    // 添加缩放监听事件
    map.addListener('zoom_changed',function() {
    infowindow.setContent('zoom: '+map.getZoom());
    });

    // map.addListener('click', function(e) {
    // var latLng = e.latLng;

    // // 添加Dom监听事件
    // // var listener = google.maps.event.addDomListener(map, 'click', function() {
    // // 点击后移除
    // // var listener = google.maps.event.addDomListenerOnce(map, 'click', function() {
    // // window.alert('坐标:'+latLng);
    // // });
    // // 删除监听事件
    // // google.maps.event.removeListener(listener);
    // // 从一个特定实例中删除所有侦听器
    // // google.maps.event.clearInstanceListeners(map);

    // // 添加标记
    // placeMakerAndPanTo(latLng, map);

    // });

    // 绘图监听事件
    map.addListener('click',addLatLng);

    poly = new google.maps.Polyline({
    draggable: true, // 是否可拖动
    editable: true, // 是否可编辑
    strokeColor: '#00FA9A',
    strokeOpacity: 1.0,
    strokeWeight: 3
    });
    poly.setMap(map);


    }
    // 绘制线路
    var poly;
    function addLatLng(event) {
    var path = poly.getPath();
    path.push(event.latLng);
    }


    // 四舍五入
    function ForDight(Dight,How){
    Dight = Math.round(Dight*Math.pow(10,How))/Math.pow(10,How);
    return Dight;
    }
    // label显示
    var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var labelIndex = 0;

    // 添加标记
    function placeMakerAndPanTo(latLng, map) {
    var marker = new google.maps.Marker({
    position: latLng,
    draggable: true,// 标记可移动
    animation: google.maps.Animation.DROP,//掉下来效果 BOUNCE 反弹效果
    label: labels[labelIndex++ % labels.length],//取余数显示
    // icon: url, 用自定义图片显示
    map: map
    });
    //添加到数组
    markers.push(marker);
    map.panTo(latLng);
    // var changeLatLng = JSON.stringify(latLng);
    // console.log(changeLatLng[0]);
    var infowindow = new google.maps.InfoWindow();
    marker.addListener('click', function() {
    infowindow.setContent("坐标:" + latLng);
    infowindow.open(marker.get('map'),marker);
    });

    }
    // 设置标记
    function setMapOnAll(map) {
    for(var i = 0; i < markers.length; i++){
    markers[i].setMap(map);
    }
    }
    // 随机降落
    function randomMarker(map) {
    var marker = new google.maps.Marker({
    position:{
    lat: bounds.south + latSpan * Math.random(),
    lng: bounds.west + lngSpan * Math.random()
    },
    draggable: true,// 标记可移动
    animation: google.maps.Animation.BOUNCE,//掉下来效果 BOUNCE 反弹效果
    map: map
    });
    markers.push(marker);

    // 显示坐标
    var infowindow = new google.maps.InfoWindow({
    content: '坐标:'+marker.getPosition()
    });
    marker.addListener('click', function() {
    infowindow.open(marker.get('map'),marker);
    });
    }

    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB0DE981xQTW4qS9XKyqL-Ay_ImoKlHlc8&callback=initMap" async defer>
    </script>
    </body>
    </html>

  • 相关阅读:
    Leetcode 421.数组中两数的最大异或值
    Leetcode 419.甲板上的战舰
    Leetcode 417.太平洋大西洋水流问题
    Leetcode 416.分割等和子集
    Leetcode 413.等差数列划分
    Leetcode 410.分割数组的最大值
    由股票价格形成因素看如何选股(发布于06-02 13:09)
    巴菲特的资产配置艺术(发布于06-01 13:28)
    ROE能否包打天下?(发布于05-31 11:27)
    价值迟迟不回归怎么办?(发布于05-30 10:02)
  • 原文地址:https://www.cnblogs.com/huaxingtianxia/p/5486611.html
Copyright © 2020-2023  润新知