zoukankan      html  css  js  c++  java
  • 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标准 地理定位

    详细参数

  • 相关阅读:
    Python2和3版本对str和bytes类型的处理
    使用Fiddle对夜神模拟器进行抓包的设置
    WebSocket 实现链接 群聊(low low low 版本)
    WebSocket 实现链接 发送消息
    Linux文件操作命令
    Linux命令格式
    FastJson
    JSON语法规则
    Mybatis resultMap支持继承
    Mybatis在xml文件中处理大于号小于号的方法
  • 原文地址:https://www.cnblogs.com/lujiang/p/7815020.html
Copyright © 2011-2022 走看看