在线看片电视剧免费看,精品国产一区二区三区2021,99久久久无码国产精品免费,精品人妻少妇嫩草AV无码专区

    電話(huà)

    0411-39943997

仟億科技
客服中心
  • 電話(huà)
  • 電話(huà)咨詢(xún):0411-39943997
  • 手機
  • 手機咨詢(xún):15840979770
    手機咨詢(xún):13889672791
網(wǎng)絡(luò )營(yíng)銷(xiāo) >更多

分享一個(gè)WebMap地圖引擎(MapBar)

作者:billionnet 發(fā)布于:2012/3/26 17:57:30 點(diǎn)擊量:

這個(gè)WebMap的引擎實(shí)則我早就(2006年初)分享過(guò)了,只是當時(shí)也沒(méi)有人注意。08年的時(shí)候,我還用這個(gè)引擎為別人做過(guò)項目,只是當時(shí)付了我八成的費用后一拖再拖就不了了之了,后來(lái)再回頭找到我的時(shí)候我也不搭理他們了。時(shí)過(guò)境遷,又是三個(gè)年頭(11年都快結束了)過(guò)去了,今天在移動(dòng)硬盤(pán)里竟然無(wú)意看到了這個(gè)當年的項目,簡(jiǎn)單的看了一下代碼,竟然還能用,加上文檔比較健全,所以簡(jiǎn)單整理一下后打包分享給大家。

這個(gè)WebMap引擎實(shí)際上是MapBar早年的引擎,當年寫(xiě)出這樣的引擎來(lái)應該說(shuō)是非常牛的,現在看來(lái)也許已經(jīng)不怎么先進(jìn)了,而且現在MapBar的技術(shù)也應該進(jìn)步了不少,Baidu的地圖應該有MapBar不小的功勞。這個(gè)引擎基本上能夠滿(mǎn)足我們基本的需求,更高級的能夠實(shí)現像Google的或者Baidu式的開(kāi)放API引擎差距不小,性能和規范性不佳,但作為項目作為簡(jiǎn)單的研究和應用應該是足夠的。具體的來(lái)看,有以下幾大功能:

常用功能:放大、縮小、拉框放大、拉框縮小、移動(dòng)、測距
通過(guò)經(jīng)緯度添加Point
設置地圖中心、獲取地圖中心
移除地圖上所有對象
設置地圖層級、獲得地圖當前層級
地圖自動(dòng)縮放至經(jīng)緯度區域范圍
在地圖上手動(dòng)標注一個(gè)Point
拉框查看所拉框矩形的范圍并回調callback函數
顯示line

我做了一個(gè)Demo,可以訪(fǎng)問(wèn)     查看實(shí)際效果,也可以看我提供的截圖:

WebMapDemo

基于以上的功能,結合起來(lái)使用則可以實(shí)現更多的應用(文檔中有具體實(shí)例分析)。

文件我已經(jīng)全部打包,下載地址:http://sharesh.googlecode.com/files/WebMapEngine_MapBar.zip,歡迎大家下載使用,歡迎分享交流并改進(jìn)。

詳細說(shuō)明如下(以下內容已經(jīng)保存到壓縮包的word文檔中):

WEBMAP引擎使用說(shuō)明

 

一,文件列表

Images目錄:需要用到的圖片文件

Js目錄:主要的JSCSS文件,核心內容

config.js:引擎參數設置

css.css:引擎調用部分的CSS文件,控制外觀(guān)

graphics.jsFireFox兼容文件

include.js:主JS文件

map.htm:地圖頁(yè)面,直接地圖內容頁(yè)面或者作為iframe框架調用頁(yè)面

Index.html:Demo頁(yè)面,列舉了絕大部分功能的實(shí)現

MapPicURLlist.exe:獲取地圖圖片路徑的輔助工具

 

二,開(kāi)始使用WEBMAP引擎

如果直接使用地圖內容頁(yè)面,即將地圖直接嵌入到網(wǎng)頁(yè)中,說(shuō)明如下:

新建一個(gè)html頁(yè)面或者動(dòng)態(tài)頁(yè)面,HTML代碼需要注意的地方有:

1,此內容不需要,否則會(huì )造成地圖引擎的失??;

2,

此內容需要更改為:

 

3,在

下需要增加

此部分為VML支持

題外話(huà):由于CSSJS文件均采用UTF-8編碼,所以建議將頁(yè)面語(yǔ)言也設置為UTF-8編碼,否則會(huì )造成顯示不正常。如果改用GB2312等編碼,則需要打開(kāi)所有CSSJS文件并另存為相應編碼格式的文件才能調用。相關(guān)網(wǎng)頁(yè)語(yǔ)言定義如下:

 

 

 

 

4,插入CSSJS

 

 

graphics.js文件由于在include.js文件中嵌入,所以不需要在此處插入。

?。?!5.顯示地圖(調用地圖引擎顯示地圖)

body的任意處加入如下JS代碼

<script language=javascript>

var maplet = new AVMaplet(39.90894606, 116.368281, 4, 600, 480,0,0,"/images/marker.gif","baidu");

maplet.showMap();

script>

釋義:script中共兩行代碼,意義如下:

第一行定義maplet為一個(gè)新的對象AVMaplet;

第二行為地圖顯示,即初始化地圖;

AVMaplet(lat, lon, zoomLevel, width, height, top, left, defaultMarkImage, style);

其中

Lat:緯度,數字

Lon:經(jīng)度,數字

ZoomLevel:縮放級別,數字。(注意:此處初始化縮放級別如果超過(guò)最大縮放級別,則地圖引擎無(wú)法顯示。此處最大縮放級別為7,總共為8級,包括0)

Width:地圖寬度,數字,單位為像素

Height:地圖高度,數字,單位為像素

Top:相對于body上層的寬度,數字,單位為像素,建議數字為0

Left:相對于body左側的寬度,數字,單位為像素,建議數字為0

說(shuō)明:由于地圖DIV框架的position設置為absolute,所以整個(gè)地圖DIV游離于body之中,需要使用TopLeft定位。而正由于此原因,建議數字為0,并使用iframe框架設計,而非頁(yè)面直接調用地圖引擎。

DefaultMarkImage:默認地圖標注圖片,文字,此處意義不大,建議設置為一個(gè)存在的默認標注圖片即可。

Style:地圖樣式,文字,此處必須設置為baidu。此樣式的本意是對于不同的合作伙伴提供不同的地圖畫(huà)面樣式,但MapBar和百度合作后就再也沒(méi)有變動(dòng)過(guò)地圖樣式,可能是百度作為大客戶(hù)的原因吧。此處樣式必須設置為baidu,不然無(wú)法調用遠程MapBar服務(wù)器上的圖片。

至此,一個(gè)顯示地圖的頁(yè)面就完成了,將文件保存為html文件即可。

由于上述原因的限制,強烈建議使用iframe嵌套以上的html文件來(lái)調用地圖引擎,而不采用單獨頁(yè)面直接調用的模式。

以上內容的相應代碼請參考map.htm文件。

 

Iframe框架調用說(shuō)明:如果使用iframe框架調用,則首先需要為iframe定義一個(gè)id,建議增加定義一個(gè)name,border建議設置為0,scrollbar等建議設置為無(wú),width和height設置為地圖對象的widthheight,這樣就可以無(wú)縫顯示在網(wǎng)頁(yè)中。建議在iframe外在包一個(gè)div,并將divwidthheight設置同上,此處有利于定位。

 

三,WEBMAP引擎函數列表

根據上述即可開(kāi)始使用地圖引擎,那么如何對地圖進(jìn)行操作呢,請見(jiàn)函數列表:

(根據第二部分的假定,我們已經(jīng)在body中創(chuàng )建了一個(gè)AVMaplet,那么下面的函數涉及到的是對該object的操作)

1,object. showMap()

功能:初始化地圖

說(shuō)明:此函數需要緊跟object定義后立即執行,整個(gè)地圖引擎中只調用一次。

2,object. addPoint(strIcon, dLat, dLon, strLabel, strInfo, bLabelOn)

功能:增加一個(gè)Point。該point帶有標題和文字的氣泡框。

說(shuō)明:

strIcon:point顯示的圖片,string

dLat:緯度,double

dLon:經(jīng)度,double

strLabel:標題,string

strInfo:內容,string。支持HTML語(yǔ)法

bLabelOn:是否顯示標題。1為顯示,其余為不顯示。在沒(méi)有特殊情況下,建議不顯示標題。對于大量的point建議不顯示標題。

3,object. addPoint2(strIcon, strLatLon, strLabel, strInfo, bLabelOn)

功能:增加一個(gè)point,同上。

說(shuō)明:

strLatLon:加密后的經(jīng)緯度坐標值。

此函數同addPoint函數的差別在于坐標的使用,此函數使用加密后的文字坐標,其余無(wú)任何差異。

4,object. setCenter(dLat,dLon)

功能:將地圖中心設置為指定坐標位置。

說(shuō)明:

dLat:緯度,double

dLon:經(jīng)度,double

5,object.clean()

功能:清除地圖中的所有對象,即所有的point、linepolygon。

說(shuō)明:此函數主要用于一批新的對象建立前。比如新建一次查詢(xún),一般則需要清除地圖中所有對象后再將結果對象顯示到地圖中。

6,strZoomLevel = object. getZoomLevel()

功能:獲取當前地圖的縮放級別

說(shuō)明:此函數返回縮放級別的字符,比如4級則返回4。

7,object. setZoomLevel(zm)

功能:設置地圖縮放級別

說(shuō)明:

zm:縮放級別,int。

注意,地圖中的縮放級別是從0級開(kāi)始的,在使用過(guò)程中注意不要超過(guò)最大縮放級別數。

8,object. zoomIn()

功能:放大,將當前地圖縮放級別增加一級。

說(shuō)明:此功能和縮放控制條中的+按鈕功能完全一致。

9,object. zoomOut()

功能:縮小,將當前地圖縮放級別縮小一級。

說(shuō)明:此功能和縮放控制條中的-按鈕功能完全一致。

10,object. setAutoZoom(minLat, minLon, maxLat, maxLon)

功能:根據最小和最大經(jīng)緯度坐標值自動(dòng)設置縮放級別

說(shuō)明:

minLat:最小緯度

minLon:最小經(jīng)度

maxLat:最大緯度

maxLon:最大經(jīng)度

11,object. addPolylineString(strStyle,strLine)

功能:增加一條線(xiàn)段

說(shuō)明:

strStyle:線(xiàn)條樣式,string。樣式共有三部分組成,由逗號隔開(kāi),比如“4,0,#0000FF

,其中,4表示線(xiàn)條寬度,0為外包邊,#0000FF表示線(xiàn)條顏色。

12,object. refresh ()

功能:刷新地圖頁(yè)面

說(shuō)明:此處在對地圖進(jìn)行某些操作后,刷新地圖讓效果立即顯示。比如添加線(xiàn)條后不能立即顯示線(xiàn)條,則需要本函數,但在很多情況下此函數自動(dòng)包含,比如設置縮放級別的函數中就自帶了刷新功能。

?。?!13,object. setMode(toolnum)

功能:設置地圖中的鼠標功能,比如放大、縮小、漫游(平移)、拉框查詢(xún)、標注等。鼠標一般默認狀態(tài)為漫游狀態(tài)。

說(shuō)明:

toolnum:模式參數,int,參數為1/2/3/5/6/116種模式。其中:

1:拉框放大

2:拉框縮小

3:漫游(平移),鼠標默認狀態(tài)

5:拉框查詢(xún)

6:標注點(diǎn),Mark

11:測距。同控制條上的測距功能完全一致。

注意,拉框放大和拉框縮小如果需要使用則必須將漫游功能顯示,不然將無(wú)法返回到漫游狀態(tài)。拉框查詢(xún)和標注點(diǎn)功能完成后建議設置返回漫游狀態(tài)。測距功能完成后自動(dòng)返回到漫游狀態(tài)。

拉框查詢(xún)和標注點(diǎn)功能需要結合callback函數一起使用,默認狀態(tài)下拉框查詢(xún)和標注點(diǎn)只返回一段字符串,字符串格式如下:

拉框查詢(xún)返回字符串:&act=lookup&ctr=strLatLon&size=Width,Height&range=Left1,Top1,Left2,Top2&zm=ZoomLevel

標注點(diǎn)返回字符串:&act=add&latlon=strLatLon&zm=ZoomLevel

字符串中使用&將各個(gè)參數串聯(lián)起來(lái),并且每個(gè)參數所對應的值使用=隔開(kāi)。需要對此字符串自行解析。參數說(shuō)明如下

act:動(dòng)作,固定值,用于區分動(dòng)作,lookup表示拉框查找,add表示標注點(diǎn)

ctr:地圖中心坐標,加密后坐標值

size:地圖大小,返回寬和高,使用逗號分隔開(kāi)

range:拉框大小,返回起點(diǎn)定位和終點(diǎn)定位,即矩形的兩個(gè)對角,共返回四個(gè)值,使用逗號隔開(kāi),分別為起點(diǎn)相對于地圖的左邊距和上邊距、終點(diǎn)相對于地圖的左邊距和上邊距。特別說(shuō)明,左邊距和上邊距需要比對后才能確定起點(diǎn)還是終點(diǎn)的邊距大,并以此推算出拉框的最小和最大經(jīng)緯度。

zm:縮放級別,返回縮放級別數值

latlon:標注點(diǎn)的坐標位置,加密后坐標值

特別注意,此callback函數僅僅返回地圖中的信息,不做任何其他處理,建議結合Form或者外部頁(yè)面共同使用來(lái)完成信息提交、查詢(xún)等功能。比如將callback函數返回的參數值傳遞給Form中的hideInput。

14,dLatLon = b.p(strLatLon)

功能:解密函數,將文字坐標解密成經(jīng)緯度坐標

說(shuō)明:

strLatLon:文字坐標

解密后得到的結果為數組,dLatLon[1]為緯度,dLatLon[0]為經(jīng)度

15,strLatLon = jiami(dLat,dLon)

功能:將數字經(jīng)緯度坐標加密成文字坐標,即b.p函數的反函數。

說(shuō)明:

dLat:緯度,double

dLon:經(jīng)度,double

加密后得到的結果為字符串

注意,本函數為了方便使用特意提取成單獨的函數。

 

四,WEBMAP引擎使用實(shí)例(以房源地圖為例)

首先我們假定地圖引擎已經(jīng)成功嵌入并成功顯示

1,價(jià)格查詢(xún)

功能描述:在地圖上劃取一個(gè)矩形,計算該矩形內房源的平均價(jià)格

解決方法:

頁(yè)面中一個(gè)Form用于提交數據,四個(gè)textInput(建議hiden)用于獲取最小和最大經(jīng)緯度,一個(gè)Button用于設置地圖鼠標狀態(tài)并在callback函數中返回最小和最大經(jīng)緯度。甚至可以一步到位在callback函數中直接提交給動(dòng)態(tài)頁(yè)面進(jìn)行查詢(xún),并最終由動(dòng)態(tài)頁(yè)面生成結果。

地圖引擎的關(guān)鍵在于提供拉框返回的最小和最大經(jīng)緯度,功能集中于Button,設置buttononclick事件為:object. setMode(5),當button被按下后改變地圖引擎中的鼠標狀態(tài)為拉框查詢(xún),在地圖中進(jìn)行拉框查詢(xún)后返回callback函數,callback函數解析后返回最小和最大經(jīng)緯度。

2,房源標注

功能描述:在地圖上顯示某個(gè)房源的位置

解決方法:

頁(yè)面中一個(gè)Form用于提交數據,兩個(gè)textInput用于獲取標注點(diǎn)的經(jīng)緯度,一個(gè)button用于設置鼠標狀態(tài)并在callback函數中返回經(jīng)緯度。

地圖引擎的關(guān)鍵在于提供標注點(diǎn)的經(jīng)緯度,功能集中于button,設置buttononclick時(shí)間為:object. setMode(6),當button被按下后改變地圖引擎中的鼠標狀態(tài)為標注點(diǎn),在地圖中單擊后返回callback函數,callback函數解析出坐標后返回經(jīng)緯度。

3,劃圖找房

功能描述:在地圖上劃取一個(gè)矩形,選擇查詢(xún)條件,查詢(xún)矩形內滿(mǎn)足查詢(xún)條件的房源列表形式顯示。在地圖上標注房屋位置。

解決方法:同第一條,涉及屬性條件查詢(xún)請使用動(dòng)態(tài)語(yǔ)言解決。

4,公交線(xiàn)路找房

功能描述:查詢(xún)某一條公交、地鐵線(xiàn)路站點(diǎn)周邊1Km內滿(mǎn)足查詢(xún)條件的租賃房源以列表形勢顯示。在地圖上標注房屋位置,當鼠標移動(dòng)到房屋位置時(shí)顯示乘車(chē)線(xiàn)路。

解決方法:

共分為兩步,第一步查找公交線(xiàn)路并顯示公交站點(diǎn),第二步在公交站點(diǎn)附近查找房源。

查找公交線(xiàn)路并顯示公交站點(diǎn):使用一個(gè)input和一個(gè)button,input中為公交線(xiàn)路查詢(xún)關(guān)鍵字,buttonForm的提交查詢(xún)功能。查詢(xún)完成顯示線(xiàn)路結果,在點(diǎn)擊線(xiàn)路的時(shí)候動(dòng)態(tài)語(yǔ)言觸發(fā)再次查詢(xún),即查詢(xún)該線(xiàn)路的公交站點(diǎn)和公交線(xiàn)路的坐標,查詢(xún)完成顯示結果的時(shí)候,需要加入javascript來(lái)操作地圖,主要的函數有addPoint函數和addPolylineString函數,用于顯示公交站點(diǎn)和公交線(xiàn)路,由于addPoint中有標題和內容之分,內容支持HTML,所以建議站名作為標題,在內容中加入查詢(xún)附近房源功能按鈕以備第二步使用。同時(shí)建議動(dòng)態(tài)語(yǔ)言計算出公交線(xiàn)路的最小和最大經(jīng)緯度,使用setAutoZoom函數將地圖縮放至合適的縮放比例。

查找公交站點(diǎn)附近房源:在氣泡框中放入距離下拉框和button,和兩個(gè)隱性input,兩個(gè)隱性input為第一步中傳遞的該站點(diǎn)的經(jīng)緯度,距離下拉框為一公里、兩公里等的距離選擇,由于1經(jīng)緯度等于111公里,所以一公里約為0.009度,只需要根據公交站的坐標位置減去和加上0.009度,即得到了最小和最大經(jīng)緯度的方框,再根據此框使用動(dòng)態(tài)語(yǔ)言查詢(xún),方法同一。此處重點(diǎn)在于根據點(diǎn)位置設計出一個(gè)矩形框進(jìn)行查詢(xún)。

5,目的地找房

功能描述:在地圖上點(diǎn)取一個(gè)點(diǎn),查詢(xún)該點(diǎn)周?chē)?/font>500M內所有經(jīng)過(guò)的公交、地鐵線(xiàn)路,并查詢(xún)這些線(xiàn)路站點(diǎn)周邊1Km內滿(mǎn)足查詢(xún)條件的租賃房源以列表形勢顯示。在地圖上標注房屋位置,當鼠標移動(dòng)到房屋位置時(shí)顯示乘車(chē)線(xiàn)路。

解決方法:

同第4條中的第二步,差別在于此處的點(diǎn)位置由標注點(diǎn)功能產(chǎn)生。

6,公交線(xiàn)路添加、修改、刪除

解決方法:

由于公交線(xiàn)路數據為外部抓取,建議使用數據庫導入。

7,地點(diǎn)經(jīng)緯度添加、修改、刪除

解決方法:

添加同第2條。修改和刪除為動(dòng)態(tài)語(yǔ)言操作數據庫。

 

五,MapPicURLlist工具的使用

MapPicURLlist工具主要功能為在固定經(jīng)緯度范圍內的圖片URL list出來(lái),并保存成文件。旨在解決離線(xiàn)或者局域網(wǎng)內使用WEBmap引擎問(wèn)題。

wps_clip_image-12055[6]

如上圖所示,圖片URL地址建議保持不變,此為瓦片的默認原始路徑,輸入最大最小經(jīng)緯度值,選擇好層級,點(diǎn)擊PNGlist,則自動(dòng)list出所有該層級、經(jīng)緯度范圍下的圖片URL列表,然后點(diǎn)擊FileSave則自動(dòng)生成PNGFileList13.txt文件,其中數字13為你設置的層級。

本工具僅為輔助工具,僅list出圖片的URL,若需要本地離線(xiàn)使用地圖,則需要將保存后的URL列表通過(guò)其他下載工具(如迅雷)下載下來(lái),并按照原有路徑保存。

 

 

六, FAQ

1,如何修改右下角文字和鏈接

Include.js文件中查找關(guān)鍵字“MapBar&ShareSh”和“http://sharesh.cn”即可

文字內容為:var WY9Xv=’©MapBar&ShareSh ;,將藍色內容改成自己的內容即可。

鏈接內容為:window.open("http://sharesh.cn");,將藍色內容改成自己的鏈接即可。

2,控制條、比例尺、版權鏈接的隱藏

Include.js文件中查找以下關(guān)鍵字

隱藏左上角控制條:this.lC8O6=true;  將true設置為false即可;

隱藏左下角比例尺:this.Q1E=true;  將true設置為false即可;

隱藏右下角版權鏈接:this.v2a2=true;  將true設置為false即可;

3,如何實(shí)現地圖的本地訪(fǎng)問(wèn)

如上所述,MapPicURLlist工具為地圖瓦片URL的輔助工具,將所有需要用到的地圖瓦片全部下載下來(lái)并在本地按照原有路徑組織好后,修改地圖引用路徑即可。

地圖默認引用路徑在include.js文件的第一行:var strImgsvrUrl = "http://img.mapbar.com/maplite/";,將藍色內容替換成自己已經(jīng)下載好的本地可訪(fǎng)問(wèn)路徑即可。

4,如何改回13級放大縮小控制條

由于個(gè)人覺(jué)得沒(méi)有必要顯示13級,加上只在北京地區使用,所以撤掉13級,直接更改為7級,需要改回的話(huà),需要修改的參數較多,主要是一些數字的微調,除了var R$1=7;中的7改為13,以及

var Y8802、var Ud0、var e3I、var e7DU4、var uGE$等參數需要設置外,還有許多地方需要調整,主要是圖片原有高度較高,修改后高度較低,建議使用文件比較器將include.js文件同我原來(lái)分享的MapBar研究(百度地圖中的JS部分)一文中的avinclude.js進(jìn)行對比,就可以看到好幾處數字的修改,修改回去即可還原13層級的控制條。

5,如何撤銷(xiāo)或擴大地圖范圍區域

由于僅需要顯示北京范圍的地圖,所以個(gè)人對地圖范圍做了一定的限制,導致地圖平移到地圖邊界的時(shí)候無(wú)法再拖動(dòng),會(huì )彈回到地圖區域范圍內。

此部分的設置在:var ph90=new Array(38,42);var o8$=new Array(114,118);,將這里的經(jīng)緯度值改為自己需要的經(jīng)緯度值即可。原有默認的中國地圖范圍區域為:var ph90=new Array(0,55);var o8$=new Array(-75,135);,這個(gè)范圍可以顯示全國甚至整個(gè)亞洲地區。

 

 



分享到:


Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明

china熟女熟妇乱老女人| 成人午夜福利视频后入| 麻豆TV入口在线看| AAA级久久久精品无码片| 国产一精品一AV一免费爽爽| 精品性影院一区二区三区内射|