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>