百度地图坐标和谷歌地图坐标互换(采用高德api,高德坐标和谷歌坐标一致)

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>百度地图坐标和谷歌地图坐标互换</title>    
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
    <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.2"></script>
</head>
<body>
    <div>
        百度地图坐标和谷歌地图坐标互换(采用高德api,高德坐标和谷歌坐标一致)</div>
    <div id="bmap" style="width: 500px; height: 400px; float: left;">
    </div>
    <div id="gmap" style="width: 500px; height: 400px; float: left; margin-left: 10px;">
    </div>
    <div class="field" style="clear: both;">
        <div class="input">
            <label for="input-small">
                百度经度:</label><input type="text" value="116.403801" id="bmaplng" name="blng" />
            <label for="input-small">
                百度維度:</label>
            <input type="text" value="39.915573" id="bmaplat" name="blat" />
            <input type="button" value="转谷歌" οnclick="b2g()" />
        </div>
    </div>
    <div class="field">
        <div class="input">
            <label for="input-small">
                谷歌经度:</label><input type="text" style="" value="116.397428" id="amaplng" name="lng" />
            <label for="input-small">
                谷歌維度:</label>
            <input type="text" style="" value="39.90923" id="amaplat" name="lat" />
            <input type="button" value="转百度" οnclick="g2b()" />
        </div>
    </div>
</body>
</html>
<script type="text/javascript">
    var ifmarker = "";
    var point;
    //百度地图初始化
    var bm = new BMap.Map("bmap");
    var bmaplng;
    var bmaplat;
    point = new BMap.Point("116.403801", "39.915573");
    bm.centerAndZoom(point, 12);
    bm.addControl(new BMap.NavigationControl());
    bm.enableScrollWheelZoom();
    //百度地图增加监听事件
    bm.addEventListener("click", function (e) {
        var pt = e.point;
        if (ifmarker != "marker") {
            addmarker_b(pt);
            amaplat = 0.000000;
            amaplng = 0.000000;
            b2gFitLocation();
        }
    });
    //百度地图添加点到地图中
    function addmarker_b(pt) {
        //debugger;
        bm.clearOverlays();
        marker_b = new BMap.Marker(pt);  // 创建标注
        bm.addOverlay(marker_b);  // 将标注添加到地图中
        marker_b.enableDragging();
        marker_b.addEventListener("dragend", function (e) {
            addmarker_b(marker_b.getPosition());
        });
        marker_b.addEventListener("click", function (e) {
            ifmarker = "marker";
        });
        document.getElementById('bmaplat').value = pt.lat.toFixed(6);
        document.getElementById('bmaplng').value = pt.lng.toFixed(6);
        bm.setCenter(pt);
        bmaplng = pt.lng;
        bmaplat = pt.lat;
    }
    //高德地图初始化
    var gm, toolbar, overview, scale;
    gm = new AMap.Map("gmap", {
        center: new AMap.LngLat(116.397428, 39.90923),
        level: 11
    });
    gm.plugin(["AMap.ToolBar", "AMap.OverView", "AMap.Scale"], function () {
        toolbar = new AMap.ToolBar();
        toolbar.autoPosition = false; //加载工具条  
        gm.addControl(toolbar);
        overview = new AMap.OverView(); //加载鹰眼 
        gm.addControl(overview);
    });
    //高德地图监听事件
    AMap.event.addListener(gm, 'click', listenerfn);
    function listenerfn(e) {
        document.getElementById("amaplat").value = e.lnglat.getLat();
        document.getElementById("amaplng").value = e.lnglat.getLng();
        addMarker_g(e.lnglat.getLng(), e.lnglat.getLat());
        point = new BMap.Point(e.lnglat.getLng(), e.lnglat.getLat());
        g2bFitLocation(point);
    }
    //高德地图添加点到地图中
    function addMarker_g(amaplng, amaplat) {
        //构建点对象
        gm.clearMap();
        var marker_g = new AMap.Marker({
            map: gm,
            position: new AMap.LngLat(amaplng, amaplat), //基点位置
            icon: "http://webapi.amap.com/images/marker_sprite.png", //marker图标,直接传递地址url
            offset: { x: -8, y: -34} //相对于基点的位置
        });
        gm.setCenter(new AMap.LngLat(amaplng, amaplat));
        //gm.setZoom(16);
        // gm.setCenter(marker_g.getPosition());
    }
    //谷歌地图转百度地图
    function g2bFitLocation(pt) {
        BMap.Convertor.translate(pt, 2, translateCallback);
    }
    //坐标转换完之后的回调函数
    function translateCallback(point) {
        addmarker_b(point);
    }
    //百度地图转换为google地图,重复调用b2gFitLocation(),直至转过来的坐标经过转换后与百度原坐标差距小于0.000002
    var amaplat = 0.000000;
    var amaplng = 0.000000;
    var bm_lat = 0;
    var bm_lon = 0;
    var delta_lat = 0;
    var delta_lon = 0;
    function b2gFitLocation() {
        //debugger;
        if (!amaplng) amaplng = 0.000000;
        if (!amaplat) amaplat = 0.000000;
        var point = new BMap.Point(amaplng, amaplat);
        BMap.Convertor.translate(point, 2, b2gTranslateCallback);
    }
    function b2gTranslateCallback(point) {
        var result_lat = bmaplat || document.getElementById('bmaplat').value;
        var result_lon = bmaplng || document.getElementById('bmaplng').value;


        bm_lat = point.lat.toFixed(6);
        bm_lon = point.lng.toFixed(6);
        delta_lat = (point.lat - result_lat).toFixed(6);
        delta_lon = (point.lng - result_lon).toFixed(6);


        var abs_delta_lat = Math.abs(delta_lat * 1e6);
        var abs_delta_lon = Math.abs(delta_lon * 1e6);
        if (abs_delta_lat < 2 && abs_delta_lon < 2) {
            document.getElementById('amaplat').value = amaplat.toFixed(6);
            document.getElementById('amaplng').value = amaplng.toFixed(6);
            addMarker_g(amaplng, amaplat);
        } else {
            amaplat = amaplat - delta_lat;
            amaplng = amaplng - delta_lon;
            b2gFitLocation();
        }
    }


    //页面按钮点击
    function b2g() {
        var lat = document.getElementById('bmaplat').value;
        var lng = document.getElementById('bmaplng').value;
        point = new BMap.Point(lng, lat);
        addmarker_b(point);
        amaplat = 0.000000;
        amaplng = 0.000000;
        b2gFitLocation();
    }
    function g2b() {
        var lat = document.getElementById('amaplat').value;
        var lng = document.getElementById('amaplng').value;
        point = new BMap.Point(lng, lat);
        addMarker_g(point.lng, point.lat);
        g2bFitLocation(point);
    }
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值