百度地图定位技术
LBS(Location Based Service,基于位置的服务)的三大目标是:你在哪里;你和谁在一起;附近有什么资源。其中『你在哪里』是LBS服务的核心。
百度智能定位服务,是为了帮助广大开发者更好解决『你在哪里』这个难题而开放的服务。支持GPS、WiFi、基站融合定位,完美支持各类应用开发者对位置获取的诉求。
百度地图开放平台定位服务是广大开发者定位首选服务,每日定位请求超过300亿次,开发者市场占有率超过70%。
不小心给百度打广告了,没办法别人做的产品就是那么优秀。
1、浏览器定位经纬度,精准定位到省市街
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
console.log(r)
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
alert('您的经纬度:'+r.point.lng+','+r.point.lat);
alert('您的位置:'+r.address.province+','+r.address.city
+','+r.address.district+','+r.address.street+','+r.address.street_number);
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true})
//关于状态码
//BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。
//BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。
//BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。
//BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。
//BMAP_STATUS_INVALID_KEY 非法密钥。对应数值“4”。
//BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。
//BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)
//BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增)
//BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增)
2、将多个经纬度标注到地图中
var index = 0;
var myGeo = new BMap.Geocoder();
var mycars = ['113.307852,23.057031','113.313082,23.047674','113.328749,23.026922'];
var adds = [];
for (var x in mycars) {
var mycar = mycars[x].split(",");
adds[x] = new BMap.Point(mycar[0],mycar[1]);
}
/*var adds = [
new BMap.Point(113.307852,23.057031),
new BMap.Point(113.313082,23.047674),
new BMap.Point(113.328749,23.026922),
new BMap.Point(113.347571,23.988698),
new BMap.Point(113.316163,23.997753),
new BMap.Point(113.345867,23.998333),
new BMap.Point(113.403472,23.999411),
new BMap.Point(113.307901,23.05901)
];*/
for(var i = 0; i<adds.length; i++){
var marker = new BMap.Marker(adds[i]);
map.addOverlay(marker);
//marker.setLabel(new BMap.Label("街道",{offset:new BMap.Size(20,-10)}));
}
3、如果你不喜欢红色,可以更换新的标注
var myIcon = new BMap.Icon("http://lbsyun.baidu.com/jsdemo/img/fox.gif", new BMap.Size(300,157));
var mycars = ['113.307852,23.057031','113.313082,23.047674','113.328749,23.026922'];
var adds = [];
for (var x in mycars) {
var mycar = mycars[x].split(",");
adds[x] = new BMap.Point(mycar[0],mycar[1]);
}
for(var i = 0; i<adds.length; i++){
var marker = new BMap.Marker(adds[i],{icon:myIcon});
map.addOverlay(marker);
}
4、根据地址查询出地图具体位置和街景图
function searchMap(){
var address = $("#searchAddress").val();
local.search(address);
}
function searchMap2(){
var start = $("#startAddress").val();
var end = $("#endAddress").val();
map.clearOverlays();
search(start,end,routePolicy[0]);
function search(start,end,route){
transit.setPolicy(route);
transit.search(start,end);
}
}
艳辉网的业务之一便是精准定位,这只是前端一小部分的定位,还有后台的web定位api。
只需一个ip,既能定位到省市街。
用法:
String ip = "223.73.53.92";
BaiduMap map = _mapUtil.getBaiduAddress();
if(map != null){
//经度
String x = map.getContent().getPoint().getX()+"";
//纬度
String y = map.getContent().getPoint().getY()+"";
String province = map.getContent().getAddress_detail().getProvince();
String city = map.getContent().getAddress_detail().getCity();
String location = y+","+x;
Map<String, String> map2 = _mapUtil.getLatAndLngByAddress2(location);
String address = map2.get("address");
System.out.println(x+","+y+","+address+","+province+","+city);
}
除了百度定位,我们还提供淘宝、新浪、腾讯、高德、搜狐定位等。
需要源码可“艳辉网”微信公众号回复“java161”,极品源码get到家。
提示:
<script type="text/javascript">
$(function(){
//获取城市ajax
$.ajax({
url: 'http://api.map.baidu.com/location/ip?ak=ia6HfFL660Bvh43exmH9LrI6',
type: 'POST',
dataType: 'jsonp',
success:function(data) {
console.log(JSON.stringify(data.content.address_detail.province + "," + data.content.address_detail.city));
$('#city').html(JSON.stringify(data.content.address_detail.province + "," + data.content.address_detail.city))
}
});
//获取ip ajax
$.ajax({
url: 'http://freegeoip.net/json/',
success: function(data){
console.log(JSON.stringify(data.ip));
$('#ip').html(JSON.stringify(data.ip))
},
type: 'GET',
dataType: 'JSON'
});
})
</script>