?? newmap.js
字號:
var strJsSrc = document.getElementById("Mapbar_Id").src;
var request = strJsSrc.substring(strJsSrc.indexOf('?'),strJsSrc.length).toQueryParams();
var strPosition = request["position"]?request["position"]:"absolute";
var mapWidth = isNum(request["width"])?parseInt(request["width"]):640;
var mapHeight = isNum(request["height"])?parseInt(request["height"]):480;
var mapZoom = isNum(request["zoom"])?parseInt(request["zoom"]):9;
var xControl = (request["control"])?request["control"]:"";
var showControl = (xControl=="false")?false:true;
var en = 0;
var rs = 0;
var mw = 0;
var bp = true;
var maplet = null;
var myPline = null;
MIN_BUBBLE_HEIGHT = 120;//提示框最小高度
STD_TIP_HEIGHT = 0;//提示框下面空白高度
oo = false; //關閉鷹眼
var mapInfo = new MapInfo();
maplet = new Maplet("mapbar");
maplet.centerAndZoom(new MPoint(mapCenter), mapZoom);
var mapControl = new MStandardControl();
maplet.addControl(mapControl);
if(!showControl) hideMapControl();
try{
document.getElementById("mapbar-preloader").style.display="none";
}catch(e){}
initMapParameter(); //初始化標注點、線、面參數
var PoiArr;
var LineArr;
var mapLock;
var mapLockMsg;
function initMapParameter() {
PoiArr = new Array();//放入所有 點 對像的數組
LineArr = new Array();//放入所有 線,面 對像的數組
mapLock = false; //操作地圖鎖, true時不能利用工具欄對地圖進行新增標注點、線、面的操作
mapLockMsg = ""; //地圖加鎖后,顯示的提示信息
}
//顯示控制條
function showMapControl() {
maplet.showControl(true);
}
//隱藏控制條
function hideMapControl() {
maplet.showControl(false);
}
//標尺模式
function setMeasureMode(){
maplet.setCursorIcon(null);
maplet.setMode("measure",setMoveMode);
}
//地圖拉框放大模式
function setZoominMode(){
maplet.setMode("zoomin");
}
//地圖拉框縮小模式
function setZoomoutMode(){
maplet.setMode("zoomout");
}
//移動模式
function setMoveMode(){
maplet.setMode("pan");//設定地圖移動方式
}
//地圖標點方式
function setPoiMode(icon){
if(!mapLock) {
alert('kk');
maplet.setMode("bookmark", poiCallback);
//var pIcon = icon || mapPoiConfig.poiIcon;
//maplet.setCursorIcon(pIcon);
} else {
altStr = "無法標注!";
if(mapLockMsg.length>0) altStr += ("\n\n原因:" + mapLockMsg);
alert(altStr);
}
}
//地圖畫線方式
function setLineMode(){
if(!mapLock) {
maplet.setCursorIcon(null);
setMoveMode();
maplet.setMode("drawline",lineCallback);
} else {
altStr = "無法畫線!";
if(mapLockMsg.length>0) altStr += ("\n\n原因:" + mapLockMsg);
alert(altStr);
}
}
//地圖畫面方式
function setAreaMode(){
if(!mapLock) {
maplet.setCursorIcon(null);
setMoveMode();
maplet.setMode("drawarea",lineCallback);
}
}
//編輯模式
function setEditMode(){
maplet.setMode("edit",editCallback);
}
//地圖重新設置大小
function setMapSize(xWidth,xHeight){
var w = mapWidth;
var h = mapHeight;
if (isNum(xWidth)){
w = parseInt(xWidth);
}
if (isNum(xHeight)){
h = parseInt(xHeight);
}
maplet.resize(w,h);
}
//設置地圖中心點
function setMapCenter(strlatlon){
var point = new MPoint(strlatlon);
maplet.setCenter(point);
}
//獲取當前地圖中心點
function getMapCenter(){
return maplet.getCurrentMap();
}
//地圖設置縮放比例
function setMapZoom(zoom){
maplet.setZoomLevel(zoom);
}
//地圖設置中心點與縮放比例
function setMapCenterAndZoom(strlatlon,zoom){
var point = new MPoint(strlatlon);
maplet.centerAndZoom(point, zoom);
}
//刷新地圖
function mapRefresh(){
maplet.refresh();
}
//清除地圖標點、線、面
function mapClean(){
if(!mapLock) {
initMapParameter();
maplet.clearOverlays();
maplet.clean();
}
}
//顯示Loading信息控制
function showMapLoading(msg) {
document.getElementById("LoadMessage").innerHTML= "<b>" + msg + "</b>";
MapLoadingDiv.style.display = "block";
//鎖住地圖新增功能
mapLockMsg = "當前狀態--" + msg;
mapLock = true;
}
//隱藏Loading信息控制
function hideMapLoading() {
MapLoadingDiv.style.display = "none";
//給地圖解鎖
mapLockMsg = "";
mapLock = false;
}
//--------------------畫點操作------------------
//標點后處理
function poiCallback(strURL) {
setMoveMode();
//關閉地圖顯示的氣泡信息
maplet.hideBubble();
//調用頁面函數,進行頁面自行處理
poiCallback_fun(strURL);
}
//從集合中根據objId獲取Poi對象
function getPoiByObjId(objId) {
var pIndex = getPoiIndexByObjId(objId);
if(pIndex==-1){
return null;
} else {
return PoiArr[pIndex];
}
}
//從集合中根據Id獲取Poi對象
function getPoiById(Id) {
var pIndex = getPoiIndexById(Id);
if(pIndex==-1){
return null;
} else {
return PoiArr[pIndex];
}
}
//從集合中根據Id內容 like 方法 獲取其中一個Poi對象
function getPoiByLikeId(Id) {
var pIndex = getPoiIndexByLikeId(Id);
if(pIndex==-1){
return null;
} else {
return PoiArr[pIndex];
}
}
//從集合中根據objId查找Poi對象的Index
function getPoiIndexByObjId(objId) {
for(var i=0; i<PoiArr.length; i++) {
if(objId == PoiArr[i].objId) {
return i;
}
}
return -1;
}
//從集合中根據Id查找Poi對象的Index
function getPoiIndexById(Id) {
for(var i=0; i<PoiArr.length; i++) {
if(Id == PoiArr[i].id) {
return i;
}
}
return -1;
}
//從集合中根據Id內容 like 方法 查找其中一個Poi對象的Index
function getPoiIndexByLikeId(Id) {
for(var i=0; i<PoiArr.length; i++) {
if(PoiArr[i].id.indexOf(Id)>-1) {
return i;
}
}
return -1;
}
//顯示指定標注點的信息
function showPoiInfoByObjId(objId) {
var i = getPoiIndexByObjId(objId);
if(i>-1){
if(PoiArr[i].preIconReadSign<1000 && (PoiArr[i].preIcon==null || !PoiArr[i].preIcon.complete)){
setTimeout("showPoiInfoById('"+Id+"')",10);
}else if(PoiArr[i].preIcon!=null && PoiArr[i].preIcon.complete){
setTimeout("PoiArr["+i+"].marker.openInfoWindow()",10);
}
}else{
//alert("該點不存在,請刷新列表");
}
}
function showPoiInfoById(Id) {
var i = getPoiIndexById(Id);
if(i>-1){
if(PoiArr[i].preIconReadSign<1000 && (PoiArr[i].preIcon==null || !PoiArr[i].preIcon.complete)){
setTimeout("showPoiInfoById('"+Id+"')",10);
}else if(PoiArr[i].preIcon!=null && PoiArr[i].preIcon.complete){
setTimeout("PoiArr["+i+"].marker.openInfoWindow()",10);
}
}else{
//alert("該點不存在,請刷新列表");
}
}
//在地圖上增加點
function addPoi(poiObj) {
try{
var point = new MPoint(poiObj.strlatlon);
if(getPoiIndexByObjId(poiObj.objId)==-1){
PoiArr.push(poiObj);
}
if(poiObj.preIconReadSign<1000 && (poiObj.preIcon==null || !poiObj.preIcon.complete)){
if(poiObj.preIcon==null){
poiObj.preIcon=new Image();
poiObj.preIcon.src=poiObj.icon;
}
poiObj.preIconReadSign++;
setTimeout("addPoi(getPoiByObjId('"+poiObj.objId+"'))",10);
} else {
if(poiObj.preIcon.width<2 || poiObj.preIcon.height<2) {
poiObj.iconWidth = 32;
poiObj.iconHeight = 32;
}else{
poiObj.iconWidth = poiObj.preIcon.width;
poiObj.iconHeight = poiObj.preIcon.height;
}
var icon = new MIcon(poiObj.getMarkerIcon(), poiObj.iconWidth, poiObj.iconHeight,(poiObj.iconWidth*poiObj.iconTargetLeft),(poiObj.iconHeight*poiObj.iconTargetTop));
var infoWindow = new MInfoWindow(poiObj.getMarkerTitle(), poiObj.getMarkerContent());
var poiMarker = new MMarker(point,icon,infoWindow);
maplet.addOverlay(poiMarker);//打點
poiObj.marker = poiMarker;
}
}catch(e){}
}
//在地圖上修改點
function updatePoi(poiObj) {
if(poiObj.preIconReadSign<1000 && (poiObj.preIcon==null || !poiObj.preIcon.complete)){
setTimeout("updatePoi(getPoiByObjId('"+poiObj.objId+"'))",10);
} else {
var poiMarker = poiObj.marker;
poiMarker.icon.img.innerHTML = poiObj.getMarkerIcon();
poiMarker.info.title = poiObj.getMarkerTitle();
poiMarker.info.content = poiObj.getMarkerContent();
poiMarker.paint();
poiObj.marker = poiMarker;
}
}
//在地圖上刪除指定點
function delPoi(poiObj) {
var poiMarker = poiObj.marker;
maplet.removeOverlay(poiMarker);
var i = getPoiIndexByObjId(poiObj.objId)
PoiArr.splice(i,1);
}
//在地圖上刪除最后顯示的點
function delLastPoi() {
poiObj = PoiArr[PoiArr.length-1];
delPoi(poiObj)
}
//--------------------畫線、面操作------------------
//畫線、面后處理
function lineCallback(strURL) {
var begin = strURL.indexOf("&latlon=");
var end = strURL.indexOf("&zm=");
var strLatLon = strURL.substring(begin+8,end);
setMoveMode();
//mapRefresh();
maplet.removeLineAt(0); //這種方式要注意保證地圖上沒有其他地方使用舊方法畫線
maplet.refresh();
//調用頁面函數,進行頁面自行處理
lineCallback_fun(strURL);
//showMapLoading("正在檢索區域信息,請稍候...")
}
//從集合中根據objId獲取Line對象
function getLineByObjId(objId) {
var lineIndex = getLineIndexByObjId(objId);
if(lineIndex==-1){
return null;
} else {
return LineArr[lineIndex];
}
}
//從集合中根據Id獲取Line對象
function getLineById(Id) {
var lineIndex = getLineIndexById(Id);
if(lineIndex==-1){
return null;
} else {
return LineArr[lineIndex];
}
}
//從集合中根據Id內容 like 方法 獲取其中一個Line對象
function getLineByLikeId(Id) {
var lineIndex = getLineIndexByLikeId(Id);
if(lineIndex==-1){
return null;
} else {
return LineArr[lineIndex];
}
}
//從集合中根據objId查找Line對象的Index
function getLineIndexByObjId(objId) {
for(var i=0; i<LineArr.length; i++) {
if(objId == LineArr[i].objId) {
return i;
}
}
return -1;
}
//從集合中根據Id查找Line對象的Index
function getLineIndexById(Id) {
for(var i=0; i<LineArr.length; i++) {
if(Id == LineArr[i].id) {
return i;
}
}
return -1;
}
//從集合中根據Id內容 like 方法 查找其中一個Line對象的Index
function getLineIndexByLikeId(Id) {
for(var i=0; i<LineArr.length; i++) {
if(LineArr[i].id.indexOf(Id)>-1) {
return i;
}
}
return -1;
}
//顯示指定線、面的信息
function showLineInfoByObjId(objId) {
var i = getLineIndexByObjId(objId);
if(i>-1){
setMapCenter(LineArr[i].centerlatlon);
LineArr[i].marker.openInfoWindow();
}else{
//alert("該 線或面 不存在,請刷新列表");
}
}
function showLineInfoById(Id) {
var i = getLineIndexById(Id);
if(i>-1){
setMapCenter(LineArr[i].centerlatlon);
LineArr[i].marker.openInfoWindow();
}else{
//alert("該 線或面 不存在,請刷新列表");
}
}
//在地圖上增加線、面
function addLine(lineObj) {
var infoWindow = new MInfoWindow(lineObj.getMarkerTitle(), lineObj.getMarkerContent());
var lineBrush = new MBrush();
lineBrush.color=lineObj.color; //線顏色
lineBrush.stroke=lineObj.stroke; //線粗細
lineBrush.style=0; //未知功能
lineBrush.fill=false; //false畫線;true畫面
lineBrush.bgcolor=lineObj.color; //面顏色
lineBrush.transparency=60; //線透明度
lineBrush.bgtransparency=30; //面透明度
lineBrush.arrow=0; //未知功能
var lineMarker = new MPolyline( lineObj.getMPointArray(), lineBrush, infoWindow);
maplet.addOverlay(lineMarker);//打點
lineObj.marker = lineMarker;
LineArr.push(lineObj);
}
//在地圖上修改線、面
function updateLine(lineObj) {
var lineMarker = lineObj.marker;
lineMarker.info.title = lineObj.getMarkerTitle();
lineMarker.info.content = lineObj.getMarkerContent();
lineMarker.pts = lineObj.getMPointArray();
lineMarker.paint();
lineObj.marker = lineMarker;
}
//在地圖上刪除指定線、面
function delLine(lineObj) {
var lineMarker = lineObj.marker;
maplet.removeOverlay(lineMarker);
var i = getLineIndexByObjId(lineObj.objId)
LineArr.splice(i,1);
}
//在地圖上刪除最后顯示的線、面
function delLastLine() {
lineObj = LineArr[LineArr.length-1];
delLine(lineObj)
}
//檢查整數數字
function isNum(xstr){
var reg = /^\d+$/ ;
var r = reg.test(xstr)
if (r==true){
return true;
} else {
return false;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -