百度地圖API——多點路徑連線問題

本文系作者 chaoCode原創(chuàng)襟雷,轉(zhuǎn)載請私信并在文章開頭附帶作者和原文地址鏈接耸弄。

違者卓缰,作者保留追究權(quán)利。

前言

本文是對于在項目應(yīng)用有遇到的多點連線問題震叮,我的一些解決方式苇瓣,以及對于之前所學(xué)習(xí)的一些百度地圖API基本使用的一個小結(jié)偿乖。
如果有小伙伴沒有看過之前的百度地圖API基本使用(一)|8月更文挑戰(zhàn)哲嘲,百度地圖API基本使用(二)|8月更文挑戰(zhàn)眠副,百度地圖API基本使用(三),可以先去觀看一下竣稽,前期所需要的一些準備毫别,以及一些基本的用法。

感興趣的小伙伴可以自行查看百度地圖官方提供的文檔
百度地圖開放平臺開發(fā)文檔中的JavaScript API

也可以通過下方示例中心更直觀的看到百度地圖API的一些使用台丛,以及它的一些特性
百度地圖開放平臺-示例中心

想深入研究百度地圖avaScript API 3.0方法參數(shù)信息的話砾肺,可以通過下方類參考
百度地圖avaScript API v3.0類參考
另外不同版本的API可以自行在開發(fā)文檔中的類參考類目中找到,請自行查找

image.png

應(yīng)用場景:

簡單來說就是點覆蓋物需要自定義圖片变汪,以及實現(xiàn)點擊點覆蓋物實現(xiàn)多點路徑連線并且添加順序編號。以及將這些數(shù)據(jù)返回到后端入庫实胸。以及根據(jù)后端數(shù)據(jù)進行回顯操作

好的根據(jù)我所描述的這個需求童芹,我們就可以回想之前學(xué)習(xí)的百度地圖API鲤拿,有哪些在這里是我們所需要的署咽。
1.百度地圖API基本使用(一)|8月更文挑戰(zhàn)中的創(chuàng)建加載地圖宁否。
2.百度地圖API基本使用(二)|8月更文挑戰(zhàn)中的創(chuàng)建點覆蓋物,點覆蓋單擊事件饱须。
3.百度地圖API基本使用(三)中的路線規(guī)劃模塊中講的一些連線操作

回想了一下我們所需要的知識點蓉媳,那么我們開始進入實操階段。

1.創(chuàng)建和加載地圖酪呻。

var map = new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(116.399, 39.910), 15);
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.NavigationControl());

2.舉個例子隨便給了4個點减宣,然后這個時候需要修改點覆蓋物的圖片,并添加點擊事件玩荠。
3.由于我們是要通過點擊點覆蓋物去實現(xiàn)漆腌,路線規(guī)劃陸續(xù)連接起來,所以講路線規(guī)劃放在了點擊事件中阶冈。本次使用的是
WalkingRoute闷尿,也就是步行路線規(guī)劃導(dǎo)航實例。

目前這個還有一些紕漏眼溶,簡單的實現(xiàn)悠砚,如果小伙伴們有更好的方案,可以評論區(qū)交流學(xué)習(xí)堂飞。

var PonitData = [ [116.404, 39.94],[116.404, 39.95],[116.404, 39.96],[116.404, 39.97]];
//總的點擊點覆蓋集合
var plan_points=[];
//兩個點連線的集合,每次連完線之后绰筛,留下后一個
var points =[];
//使用each去循環(huán)渲染點覆蓋物
$.each(PonitData, function (item, value) {
    var point =new BMap.Point(value[0], value[1]);
    //自定義圖片var myIcon = new BMap.Icon(圖片路徑, new BMap.Size(23, 25), {});
    var myIcon = new BMap.Icon("images/marker.png", new BMap.Size(23, 25), {
        // 指定定位位置枢泰。
        // 當(dāng)標注顯示在地圖上時,其所指向的地理位置距離圖標左上
        // 角各偏移10像素和25像素铝噩。您可以看到在本例中該位置即是
        // 圖標中央下端的尖角位置衡蚂。
        //anchor: new BMap.Size(23, 25),
        // 設(shè)置圖片偏移。
        // 當(dāng)您需要從一幅較大的圖片中截取某部分作為標注圖標時骏庸,您
        // 需要指定大圖的偏移位置毛甲,此做法與css sprites技術(shù)類似。
        //imageOffset: new BMap.Size(0, 0 - index * 25)   // 設(shè)置圖片偏移
    });
    // 創(chuàng)建標注對象并添加到地圖
    var marker = new BMap.Marker(point);
    marker.setIcon(myIcon);
    map.addOverlay(marker);

    //給點覆蓋物添加點擊事件
    marker.addEventListener("click", function (e)
    {
        var planPointFlage=false;
        if (plan_points.length>0){
            $.each(plan_points, function (item, value) {
                console.log(value);
                if (value.lng==point.lng && value.lat==point.lat){
                    planPointFlage = true;
                    planPonitIndex=item;
                }
            });
        }
        var pointFlage=false;
        if (points.length>0) {
            $.each(points, function (item, value) {
                if (value.lng == point.lng && value.lat == point.lat) {
                    pointFlage = true;
                }
            });
        }
        if(!planPointFlage){
            plan_points.push(point);
            if(!pointFlage){
                points.push(point);
            }
            //點擊點的時候獲取點在數(shù)組中所在的位置
            var planPonitIndex=-1;
            if (plan_points.length>0){
                $.each(plan_points, function (item, value) {
                    if (value.lng==point.lng && value.lat==point.lat){
                        planPonitIndex=item;
                    }
                });
            }
            //配置label顯示為該點覆蓋物在數(shù)組中的下標+1具被,表示這個點是第幾個玻募,以及點坐標,字的位置一姿。
            var lab1 = new BMap.Label(planPonitIndex + 1, { position: point, offset: new BMap.Size(-7, -12) });
            //配置label的一些樣式
            lab1.setStyle({
                color: "#fff",
                fontSize: "16px",
                backgroundColor: "0.05",
                border: "0",
                fontWeight: "bold"
            });
            marker.setLabel(lab1);
            map.addOverlay(marker);
            //禁用自動調(diào)整地圖層級
            walking.disableAutoViewport();
            var walking = new BMap.WalkingRoute(map, { renderOptions: { map: map, autoViewport: true } });
            if (points.length === 2) {
                var start =points[0];
                var end = points[1];
                //設(shè)置自定義圖片七咧,覆蓋掉路線規(guī)劃的時候的起點和重點圖片,使用的是和點覆蓋物一樣的圖片
                var startIcon = new BMap.Icon("images/marker.png", new BMap.Size(23, 25));
                walking.setMarkersSetCallback(function(result){
                    //覆蓋起點的圖片
                    result[0].marker.setIcon(startIcon);
                    //覆蓋終點
                    result[1].marker.setIcon(startIcon);
                });
                //發(fā)起檢索
                walking.search(start, end);
                //兩個點連線的集合置空
                points = [];
                //添加最后一個進入數(shù)組
                points.push(end);
            }
        }
    });

感興趣的小伙伴可以自行去研究,或者在評論區(qū)提問交流叮叹。
百度地圖Javascript API 3.0 出行路線規(guī)劃
百度地圖JS API示例 路線規(guī)劃
百度地圖avaScript API v3.0類參考

感謝諸君的觀看艾栋,文中如有紕漏,歡迎在評論區(qū)來交流蛉顽。如果這篇文章幫助到了你蝗砾,歡迎點贊??和關(guān)注。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市悼粮,隨后出現(xiàn)的幾起案子拇泣,更是在濱河造成了極大的恐慌,老刑警劉巖矮锈,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霉翔,死亡現(xiàn)場離奇詭異,居然都是意外死亡苞笨,警方通過查閱死者的電腦和手機债朵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瀑凝,“玉大人序芦,你說我怎么就攤上這事≡吝洌” “怎么了谚中?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寥枝。 經(jīng)常有香客問我宪塔,道長,這世上最難降的妖魔是什么囊拜? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任某筐,我火速辦了婚禮,結(jié)果婚禮上冠跷,老公的妹妹穿的比我還像新娘南誊。我一直安慰自己,他們只是感情好蜜托,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布抄囚。 她就那樣靜靜地躺著,像睡著了一般橄务。 火紅的嫁衣襯著肌膚如雪幔托。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天仪糖,我揣著相機與錄音柑司,去河邊找鬼迫肖。 笑死锅劝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟆湖。 我是一名探鬼主播故爵,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诬垂?” 一聲冷哼從身側(cè)響起劲室,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎结窘,沒想到半個月后很洋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡隧枫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年喉磁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片官脓。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡协怒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卑笨,到底是詐尸還是另有隱情孕暇,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布赤兴,位于F島的核電站妖滔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桶良。R本人自食惡果不足惜铛楣,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艺普。 院中可真熱鬧簸州,春花似錦、人聲如沸歧譬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑰步。三九已至矢洲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缩焦,已是汗流浹背读虏。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留袁滥,地道東北人盖桥。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像题翻,于是被迫代替她去往敵國和親揩徊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容