百度地图可视区域随标记点位置自动切换

注:为保证demo正常运行,需要在下面代码这一行<script src=“http://api.map.baidu.com/api?v=2.0&ak=你的key”></script>填写有效的key

核心代码

var curPoint = new BMap.Point(113.2487, 26.4457); //当前的点
var bound = map.getBounds(); //地图可视区域
if (!bound.containsPoint(curPoint)) { //如果点不在可视区域内
    map.setCenter(curPoint); //设置当前的点为地图中心点
}

完整代码

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>百度地图可视区域内随标记点位置自动切换</title>
    <style>
    body,
    html,
    #map {
        width: 100%;
        height: 100%;
        overflow: hidden;
        margin: 0;
        font-family: "微软雅黑";
    }

    .map-tools {
        position: fixed;
        right: 15px;
        bottom: 15px;
        z-index: 9;
        width: 48px;
        height: 96px;
        text-align: center;
        background: #fff;
        border-radius: 4px;
        box-shadow: 0 2px 3px rgba(0, 0, 0, .3);
    }

    .btn {
        width: 48px;
        height: 48px;
        line-height: 48px;
        font-size: 30px;
        cursor: pointer;
        user-select: none;
    }
    .btn:hover {
    	background: rgba(0, 0, 0, .05);
    }

    .btn-plus {
        border-bottom: 1px solid rgba(0, 0, 0, .1);
    }
    </style>
</head>

<body>
    <div class="map-tools">
        <div id="plusBtn" class="btn btn-plus">+</div>
        <div id="minusBtn" class="btn btn-minus">-</div>
    </div>
    <div id="map"></div>
    <script src="http://api.map.baidu.com/api?v=2.0&ak=你的key"></script> <!-- 必须填写key!!! -->
    <script>
    var map,centerPoint,marker;
    mapInit();
    zoomMap();
    addMarker();

    //地图初始化
    function mapInit(){
    	map = new BMap.Map("map"); //创建地图到ID元素容器
    	centerPoint = new BMap.Point(randomLnglat().lng, randomLnglat().lat);
    	map.centerAndZoom(centerPoint, 4); // 初始化地图,设置中心点坐标和地图级别
    }

    //添加标记
    function addMarker(){
    	marker = new BMap.Marker(centerPoint);
    	map.addOverlay(marker);
    }

    //每3秒钟改变一次Marker经纬度
    setInterval(function() {
        var curPoint = new BMap.Point(randomLnglat().lng, randomLnglat().lat); //随机生成坐标
        marker.setPosition(curPoint); //设置新坐标点

        var bound = map.getBounds(); //地图可视区域
        if (!bound.containsPoint(curPoint)) { //如果点不在可视区域内
            map.setCenter(curPoint); //设置视图中心点
        }
    }, 3000);


    //随机经纬度
    function randomLnglat() {
        var lnglat = {};
        lnglat.lng = Math.round((Math.random() * 360 - 180) * 1000) / 1000; //经度取值范围-180~180
        lnglat.lat = Math.round((Math.random() * 180 - 90) * 1000) / 1000; //纬度取值范围-90~90
        return lnglat;
    }

    //缩放地图
    function zoomMap() {
        plusBtn.onclick = function() {
            map.zoomTo(map.getZoom() + 1); //获取地图级别+1
        };
        minusBtn.onclick = function() {
            map.zoomTo(map.getZoom() - 1); //获取地图级别-1
        };
    }
    </script>
</body>

</html>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值