JS新API标准 地理定位(navigator.geolocation


帖上PHP转换代码


/**
* 中国正常GCJ02坐标---->百度地图BD09坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
*/
function Convert_GCJ02_To_BD09($lat,$lng){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng;
        $y = $lat;
        $z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta) + 0.0065;
        $lat = $z * sin($theta) + 0.006;
        return array('lng'=>$lng,'lat'=>$lat);
}

/**
* 百度地图BD09坐标---->中国正常GCJ02坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
* @return array();
*/
function Convert_BD09_To_GCJ02($lat,$lng){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng - 0.0065;
        $y = $lat - 0.006;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta);
        $lat = $z * sin($theta);
        return array('lng'=>$lng,'lat'=>$lat);
}


var map = new BMap.Map("map");
            var lng = $("input[name='lng']").val();
            var lat = $("input[name='lat']").val();
            lng = lng > 0 ? lng: 116.404;
            lat = lat > 0 ? lat: 39.915;
            var point = new BMap.Point(lng,lat);
            map.enableScrollWheelZoom(); //启用滚轮放大缩小,默认禁用
            map.enableContinuousZoom(); //启用地图惯性拖拽,默认禁用
            map.centerAndZoom(point, 11);        
            map.addEventListener("click", function(e){
                ediell(e.point.lng,e.point.lat)
                var now_point = new BMap.Point(e.point.lng, e.point.lat );
                marker.setPosition(now_point);//设置覆盖物位置
                alert('当前经度:'+e.point.lng+' , 纬度: '+e.point.lat);
            });

            var marker = new BMap.Marker(point); //创建marker对象
            marker.enableDragging(); //marker可拖拽
            //拖拽结束事件
            marker.addEventListener("dragend", function(e){
                //返回覆盖物标注的地理坐标。
                var o_Point_now = marker.getPosition();
                ediell(o_Point_now.lng,o_Point_now.lat)
                alert('当前经度:'+o_Point_now.lng+' , 纬度: '+o_Point_now.lat);
            });
            map.addOverlay(marker);

            function ediell(lng,lat){
                $("input[name='lng']").val(lng);
                $("input[name='lat']").val(lat);         
            }

    $("#ln").click(function(){
            var province = addAdressDom.find('select[name="province"]').find("option:selected").text();
            var city = addAdressDom.find('select[name="city"]').find("option:selected").text();
            var area = addAdressDom.find('select[name="county"]').find("option:selected").text();

            if(province.length <1 || city.lenght < 1){
                motify.log('请选择省,市,县');return false;
            }
            var addressDom = addAdressDom.find('input[name="address"]');
            var address = $.trim(addressDom.val());
            var keyword = province+city+area+address;
            console.log(keyword);
            var localSearch = new BMap.LocalSearch(map);
            localSearch.enableAutoViewport();
            //map.clearOverlays();//清空原来的标注
            localSearch.setSearchCompleteCallback(function (searchResult) {
                var poi = searchResult.getPoi(0);
                //document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
                map.centerAndZoom(poi.point, 11);
                var now_point = new BMap.Point(poi.point.lng, poi.point.lat);
                marker.setPosition(now_point);
                ediell(poi.point.lng,poi.point.lat)
                //var content = document.getElementById("text_").value + "<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat;
                //var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
                //marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); });
                // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
            });
            localSearch.search(keyword);
        });                
        
        if(callbackObj) callbackObj();
<script type="text/javascript">
    var options = {
        enableHighAccuracy:false,
        timeout:8000,
        maximumAge:1000
    }
    var long = 0;
    var lat = 0;
    navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

    function onSuccess(position){
    var long = position.coords.longitude;
    var lat = position.coords.latitude;        
        alert(long+'=>'+lat);
        console.log(position);
    }

    function onError(error) {
        console.log(error);
    }

</script>

JS新API标准 地理定位

详细参数

原文地址:https://www.cnblogs.com/lujiang/p/7815020.html