百度地圖API自定義地圖

1、使用說明   JavaScript API v1.4及之前版本無須申請密鑰(ak),自v1.5版本開始須要先申請密鑰(ak),纔可以使用。僅JavaScript API V2.0 版本支持https,其餘JavaScript API版本均不支持。手機端引用須要添加meta標籤<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> (這裏須要注意一點:meta標籤中的值不能改變,有些移動端寫法可能改變了meta標籤的值會形成移動端地圖字體特別小的問題)。在使用百度地圖JavaScript API服務時,需使用百度BD09座標,如使用其餘座標( WGS8四、GCJ02)進行展現,需先將其餘座標轉換爲BD09。html

2、百度地圖使用ios

html中api

<div style="width:100%;height:550px;" id="map"></div>      //必定要有寬度和高度來顯示地圖

一、引用百度地圖API文件 數組

http://api.map.baidu.com/api?v=1.4 //參數v表示您加載API的版本,使用JavaScript APIv1.4及之前版本可以使用此方式引用。
http://api.map.baidu.com/api?v=2.0&ak=您的密鑰  //使用JavaScript APIv2.0請先申請密鑰ak,按此方式引用。

二、建立地圖實例瀏覽器

var map = new BMap.Map("map"); //BMap命名空間下的Map類表示地圖,經過new操做符能夠建立一個地圖實例,參數能夠是元素id也能夠是元素對象

三、建立點座標app

var point = new BMap.Point(116.404, 39.915); //用BMap命名空間下的Point類來建立一個座標點

四、地圖初始化函數

map.centerAndZoom(point, 15); //BMap.Map.centerAndZoom()方法要求設置中心點座標和地圖級別。地圖必須通過初始化才能夠執行其餘操做。

以上這樣就能夠實現一個百度地圖的簡單調用字體

五、地圖狀態的變化this

map.panTo(new BMap.Point(116.409, 39.918)); //panTo()方法將讓地圖平滑移動至新中心點,若是移動距離超過了當前地圖區域大小,則地圖會直跳到該點。

六、添加控件配置url

map.enableScrollWheelZoom(true); //啓用滾輪放大縮小
//向地圖中添加縮放控件
var ctrlNav = new window.BMap.NavigationControl({
anchor: BMAP_ANCHOR_TOP_LEFT,
type: BMAP_NAVIGATION_CONTROL_LARGE
});
map.addControl(ctrlNav);
//向地圖中添加縮略圖控件
var ctrlOve = new window.BMap.OverviewMapControl({
anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
isOpen: 1
});
map.addControl(ctrlOve);
//向地圖中添加比例尺控件
var ctrlSca = new window.BMap.ScaleControl({
anchor: BMAP_ANCHOR_BOTTOM_LEFT
});
map.addControl(ctrlSca);
//地圖標記點擊事件;info是信息數組,index是信息數組中索引
map.clickelen = function(elem,info,index){
elem.openInfoWindow(info[index]);
};
map.addControl(new BMap.NavigationControl());    //添加平移縮放控件
map.addControl(new BMap.ScaleControl()); //添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); //添加縮略圖控件

七、修改控件樣式

var opts = {type: BMAP_NAVIGATION_CONTROL_SMALL} //修改平移控件樣式 map.addControl(new BMap.NavigationControl(opts));
var opts = {offset: new BMap.Size(150, 5)} //修改比例尺的偏移位置 map.addControl(new BMap.ScaleControl(opts)); 

八、判斷是否支持h5瀏覽器定位

function map_init() {
//判斷是否支持h5瀏覽器定位start
map= new BMap.Map("map");
if (navigator.geolocation){
window.navigator.geolocation.getCurrentPosition(function(position){
//ios10
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(position){
  lat = position.point.lat;
  lng = position.point.lng;
  mapGPS(lat,lng,10); //獲取成功定位後執行的函數
},function(error){
  alert("errorCode:"+error.code+",errorMessage:"+error.message);
  console.log("errorCode:"+error.code+",errorMessage:"+error.message);
});
//IOS10 end
}, function(error){
// oalert("GPS信號不穩定,沒法精肯定位");
function theLocation(cityName){//根絕城市名定位
  var city = cityName;
  if(city != ""){
    map.centerAndZoom(cityName,11); // 用城市名設置地圖中心點
  }
}
function myFun(result){
  var cityName = result.name;
  //獲取城市名cityName
  theLocation(cityName);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
});
}else{
alert("沒法獲取當前位置");
}
//判斷是否支持h5瀏覽器定位end
}

九、動態添加多個標註點以及點擊標註點彈出信息框

var point = new Array(); //存放標註點經緯信息的數組
var marker = new Array(); //存放標註點對象的數組
var info = new Array(); //存放提示信息窗口對象的數組
var markerArr;//獲取到的數據集合
var markerArrlen;//後臺傳過來的數據長度
//調用地圖
function mapall(markerArr,markerArrlen,point,marker,info,markMan){
for (var i = 0; i < markerArr.length; i++) {
var p0 = markerArr[i].lng ; //
var p1 = markerArr[i].lat ; //按照原數組的point格式將地圖點座標的經緯度分別提出來
var me_point = new window.BMap.Point(p0, p1); //循環生成新的地圖點
//將gps座標轉換成百度座標
markMan++;
var me_point2 = new window.BMap.Point(p0, p1); //循環生成新的地圖點
var imgurl ="${context}/resources/cellar/images/map_me2.png";
var myIcon = new BMap.Icon(imgurl, new BMap.Size(18,33));
marker[i] = new BMap.Marker(me_point2,{icon:myIcon}); // 建立標註
map.addOverlay(marker[i]);
info[i] = new window.BMap.InfoWindow("<p class='addresstext'>姓名:" + markerArr[i].name + "</br>地址:" + markerArr[i].address + "</br> 電話:" + markerArr[i].mobile + "</br></p >"); // 建立信息窗口對象
if(markMan==parseInt(markerArrlen)){
for(var h=0;h<markerArr.length;h++){
//標記綁訂點擊事件;
var info2 = info;
marker[h].index=h;
marker[h].addEventListener("click", function(){
map.clickelen(this,info2,this.index);
});
}
}
}
}

 

 

十、清除以前添加信息

map.clearOverlays();    //清除以前添加的標註等

十一、讓本身寫的全部地圖標註顯示在最佳視野內的實現方法

map.setViewport(viewpoints);
這裏須要注意的是:viewpoints必須是個數組,不能是單個點。
還可能遇到的bug:
viewpoints按數組添加的,可是剛進地圖沒有顯示出來得縮小地圖才能看到,可能的緣由是:
map.centerAndZoom("北京市", 12); map.setViewport(points); //你的centerAndZoom函數設置成城市名了,該狀況下百度會作不少後續處理,
map.setViewport(points);這句代碼是執行了的,可是map.centerAndZoom("北京市", 12); 這句代碼好像有相似回調函數之類的操做,他會覆蓋map.setViewport(
viewpoints);這句代碼的執行結果。
相關文章
相關標籤/搜索