遇到的問題
在地圖上點擊一個marker,在彈出的信息裏點擊左邊按鈕傳id1,點擊右邊按鈕傳id2,其中id1在接口中,id2在json中,怎麼把id2綁在id1的後面呢,用~隔開。
思路
先獲取接口的url,得到接口的信息列表,定義一個變量,用ajax的get請求去訪問json,把返回來的數據給這個變量,然後for循環第一個接口的數據 正常處理數據,再for循環json的數據,把第一個接口的數據和json的數據都進行處理,即把id1~id2作連接。創建marker,marker中的經緯度用的是接口裏的。(除了json裏的id與接口的id作連接以外,其他數據都是用接口的。)那同時信息接口也要接受帶有這樣的參數。點擊maker時,在彈出的彈框中,做判斷如果有兩個id 第一行顯示id1,第二行顯示id2,如果沒有倆個id,那麼兩行都顯示id1,同時設置左邊按鈕data-id=id1 右邊data-id=id2。
注意事項
1.先加載接口的數據,因爲你先用的接口數據。
2.要做~的判斷,我是用的length來判斷,也可以用indexof‘("")>-1來做,但是它返回的結果不是布爾類型,而是位置信息。
3.傳一個id值的只顯示左邊按鈕,傳兩個的兩邊都顯示。
代碼片段展示
getPortList: function () {
var url = this.config.listUrl;
this.ajax.get(url, null, true, this, function (res) {
if (res.state !== 1) {
console.error(res.msg.error);
} else {
var listinfo = res.msg.portlist;
var ports=null;
var url1 = "data/portList.json";
this.ajax.get(url1, null, true, this, function (res) {
ports=res;
for (var i = 0, len = listinfo.length; i < len; i++) {
var port = this.convertPortObj(listinfo[i]);//顯示所有
for(var j=0,lens=ports.PortList.length;j<lens;j++){
if(ports.PortList[j].name==listinfo[i].portNameEn){
port = this.convertRelationPortObj(listinfo[i],ports.PortList[j]);//顯示與json數據
}
}
var marker = this.createPortMarker(port, true);
if (this.ictmap.map.getZoom() < this.config.showLevel) {
marker.setOpacity(0);
marker.off("click", this.portClickEvt, this);
}
this.portLayerGroup.addLayer(marker);
}
},function(error){
console.error("獲取!");
});
}
}, function (error) {
console.error("獲取!");
});
},
convertRelationPortObj: function (obj,obj1) {
var oneobj = {};
oneobj.id = obj.id+'~'+obj1.id;//id1和id2的連接
oneobj.cc = obj.cc;
oneobj.lon = obj.lon / 600000;
oneobj.lat = obj.lat / 600000;
oneobj.name = obj.name;
return oneobj;
},
//顯示彈框中做的判斷
if(portobj.origId.length>7){
var infoid=portobj.origId.split("~")[0];
var hideid=portobj.origId.split("~")[1];
}else{
var infoid=portobj.id;
var hideid=portobj.id;
}
html.push('<tr><td>' + p1 + '</td><td>' + infoid + '</td></tr>');
html.push('<tr style="display:none;"><td></td><td></td></tr>');
html.push('<tr style="display:none;"><td>' + p1 + '</td><td>' + hideid + '</td></tr>')
html.push('<button type="button" class="portdetail" data-id="'+ infoid +'">'+ p13 +'</button>'); //左邊按鈕
html.push('<button type="button" class="relation" data-id="'+ hideid +'">'+ p14 +'</button>');//右邊按鈕
//傳參數進去
//點擊左邊按鈕事件傳參
var portid = $(this).data("id");
window.open('resultpage/detail.html?param=' + portid;
//點擊右邊按鈕事件傳參
var portid = $(this).data("id");
window.open('resultpage/relation.html?param=' + portid;