1. 程式人生 > >解決在EasyUI中使用百度地圖出現不居中和座標圖示顯示異常的問題(紅色程式碼部分)

解決在EasyUI中使用百度地圖出現不居中和座標圖示顯示異常的問題(紅色程式碼部分)

問題:

1.載入指定經緯度的座標點怎麼都不居中顯示,總是顯示在左上角,需要在地圖載入完後拖動才看到指定的座標點;

2.顯示的座標點圖片沒有正常顯示,後面使用了自定義座標圖片(如圖):

 
解決後:
 
參考:
1.百度地圖API類:http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E6%A0%B8%E5%BF%83%E7%B1%BB
2.自定義圖示這裡有:http://blog.csdn.net/chenmoquan/article/details/13631673
3.座標總是顯示在左上角:http://tieba.baidu.com/p/1712879513
4.解決程式碼參看myIcon=和map.panBy(320, 225)處,也就是標紅的2個部分;

頁面:

/* 百度地圖樣式 */ #allmap { width:650px; height:450px; }

<div id="allmap"></div>

js

/**************************************************** * 載入百度地圖 * http://developer.baidu.com/ ****************************************************/

var map, myIcon; // 地圖全域性變數,自定義圖示名稱

 // 載入百度地圖:商家名稱,lng經度,lat緯度,商家詳細地址,商家聯絡電話

function mapBind(mName, lng, lat, address, tel){ // 建立百度地圖Map例項 map =newBMap.Map("allmap"); // 逆地址解析 var gc =newBMap.Geocoder(); /** * 百度地圖API介面類:http://developer.baidu.com/map/reference/index.php?title=Class:總類/核心類 * 自定義座標點指示圖示:http://blog.csdn.net/chenmoquan/article/details/13631673 */ myIcon =newBMap.Icon
(objUrl +"/resources/images/detail/myicon.png", newBMap.Size(20,30), { imageSize:newBMap.Size(20,30),// 圖示所用的圖片的大小,此功能的作用等同於CSS中的background-size屬性 anchor:newBMap.Size(10,30),// 圖示的定位點相對於圖示左上角的偏移值 infoWindowAnchor:newBMap.Size(10,0)// 資訊視窗開啟位置相對於圖示左上角的偏移值 });
// 初始化地圖,設定中心點座標和地圖級別 (new BMap.Point(106.620, 26.648), 13); //map.centerAndZoom(new BMap.Point(data.C_LONGITUDE, data.C_LATITUDE), 18); map.enableScrollWheelZoom(true); // 單擊獲取點選的經緯度 map.addEventListener('click',function(e){ var pt = e.point; // 將點選獲取的經緯度賦值到控制元件 $('#txtLng').numberbox('setValue', pt.lng); $('#txtLat').numberbox('setValue', pt.lat); map.clearOverlays(); map.centerAndZoom(pt); map.addOverlay(newBMap.Marker(pt,{icon:myIcon}));//新增標註和自定義圖示 // 逆地址解析:將點選獲取的經緯度解析為詳細地址 gc.getLocation(pt,function(rs){ /* var ac = rs.addressComponents; $('#txtAddress').textbox('setValue', ac.city + ac.district + ac.street + ac.streetNumber); */ /* alert(ac.province + ", " + ac.city + ", " + ac.district + ", " + ac.street + ", " + ac.streetNumber); */ }); }); // 新增地圖型別控制元件 map.addControl(newBMap.MapTypeControl()); // 左上角,新增比例尺 map.addControl(newBMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT})); // 左上角,新增預設縮放平移控制元件 map.addControl(newBMap.NavigationControl()); // 右上角,僅包含平移和縮放按鈕 /* map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL})); */ // 設定地圖顯示的城市 此項是必須設定的 //map.setCurrentCity("貴陽市"); var point;//存放標註點經緯資訊的陣列 var marker;//存放標註點物件的陣列 var info;//存放提示資訊視窗物件的陣列 if(lng !=''&& lat !=''){ // 座標點 point =new window.BMap.Point(lng, lat); // 按照地圖點座標生成標記 marker =new window.BMap.Marker(point,{icon:myIcon}); // 跳動的動畫 marker.setAnimation(BMAP_ANIMATION_BOUNCE); // 建立資訊視窗物件 info =new window.BMap.InfoWindow("<p style=’font-size:12px;lineheight:1.8em;’>名稱:"+ mName +"</br>地址:"+(address ==undefined?"": address) +"</br> 電話:"+(tel ==undefined?"": tel )+"</br></p>"); // 設定座標的文字標籤 var label =new window.BMap.Label(mName,{ offset:new window.BMap.Size(20,-10)}); marker.setLabel(label); // 滑鼠移到座標點顯示資訊框 marker.addEventListener("mouseover",function(){ this.openInfoWindow(info); }); // 清除地圖上的所有覆蓋物 map.clearOverlays(); map.centerAndZoom(point,18); map.addOverlay(marker); //map.panTo(point); map.setCenter(point); } // 座標不居中:http://tieba.baidu.com/p/1049624601 // http://tieba.baidu.com/p/1712879513 var newPt =newBMap.Point(lng, lat); map.centerAndZoom(newPt,18); //map.setCenter(newPt);或者 map.setCenter(new BMap.Point(lng, lat),16); // 中心點偏移多少畫素(width,height)為地圖div寬高的1/2;解決不居中問題 map.panBy(320,225); // 百度地圖關鍵字提示輸入並定位功能 mapDownClick(); } // 百度地圖關鍵字提示輸入並定位功能:http://developer.baidu.com/map/jsdemo.htm#a6_2 function mapDownClick(){ // 建立一個自動完成的物件 var ac =newBMap.Autocomplete( { "input":"suggestId", "location": map }); // 滑鼠放在下拉列表上的事件 ac.addEventListener("onhighlight",function(e){ var str =""; var _value = e.fromitem.value; var value =""; if(e.fromitem.index >-1){ value = _value.province + _value.city + _value.district + _value.street + _value.business; } str ="FromItem<br />index = " + e.fromitem.index +"<br />value = "+ value; value =""; if(e.toitem.index >-1){ _value = e.toitem.value; value = _value.province + _value.city + _value.district + _value.street + _value.business; } str +="<br />ToItem<br />index = " + e.toitem.index +"<br />value = " + value; getObj("searchResultPanel").innerHTML = str; }); // 滑鼠點選下拉列表後的事件 var myValue; ac.addEventListener("onconfirm", function(e){//滑鼠點選下拉列表後的事件 var _value = e.item.value; myValue = _value.province + _value.city + _value.district + _value.street + _value.business; getObj("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index +"<br />myValue = "+ myValue; // 設定搜到的地點圖示 setPlace(myValue); }); } // 百度地圖API功能 function getObj(id){ return document.getElementById(id); } // 設定搜到的地點圖示 function setPlace(myValue){ map.clearOverlays();// 清除地圖上所有覆蓋物 function myFun(){ var pp =local.getResults().getPoi(0).point;//獲取第一個智慧搜尋的結果 map.centerAndZoom(pp,18); map.addOverlay(newBMap.Marker(pp,{icon:myIcon}));//新增標註和自定義圖示 } varlocal=newBMap.LocalSearch(map,{//智慧搜尋 onSearchComplete : myFun }); local.search(myValue); }


相關推薦

解決EasyUI使用地圖出現居中座標圖示顯示異常的問題(紅色程式碼部分)

問題:1.載入指定經緯度的座標點怎麼都不居中顯示,總是顯示在左上角,需要在地圖載入完後拖動才看到指定的座標點;2.顯示的座標點圖片沒有正常顯示,後面使用了自定義座標圖片(如圖):   解決後:   參考: 1.百度地圖API類:http://developer.baidu

Android使用地圖出現閃退及定位時顯示藍屏問題

ima pos mod cal targe req except bubuko and 目錄 1.Android使用百度地圖出現閃退 2.Android使用百度地圖定位出現藍屏問題 1.Android使用百度地圖出現閃退 一般情況下出現閃退

解決iframe載入過地圖在iframe裡顯示問題

問題: 最近用layui搭的一個框架,內容主題部分用的是iframe,但是載入過百度地圖那個頁面後再點選其他的選單就會在新頁面開啟,而不是在iframe裡打開了。 解決: 還是原來的iframe <iframe id="optionId" name="op

整合地圖出現Unable to start activity ComponentInfo 解決方法

我傻了 搞了半天發現初始化出現問題 SDKInitializer.initialize(getApplicationContext());這句話忘寫了 注意 如果在Activity裡面初始化  這句話要寫在setContentVIew之前

解決Vue引入地圖JSSDK:BMap is undefined 問題

原文連結: 解決Vue引入百度地圖JSSDK:BMap is undefined 問題 百度地圖官網文件介紹使用JSSDK時,僅提供了2種引入方式: script引入 非同步載入 但vue專案中僅某一兩個頁面需要用到百度地圖,所以不想在 index.html 中全域性引用。 那

Android:禁止viewpager左右滑動,去除viewpager切換時動畫,解決viewpager與地圖滑動衝突

Android自定義viewpager,禁止viewpager左右滑動,去除viewpager切換時動畫,解決viewpager與百度地圖滑動衝突 public class CustomViewPager extends ViewPager { private boolean e

bootstrap模態框引用地圖出現中心點偏移到左上角

當發生中心進行偏移到左上角的時候,我們要知道為什麼會發生這個問題   原因就是模態框在沒有彈出的時候,即隱藏狀態下,地圖api會預設為寬高為0,所以他的初始寬高為0,因此中心點不管取什麼值都會在左上角 解決方案:   我們首先要了解一個地圖api的事件:tilesloaded  

Android地圖獲取到經緯度的問題

年前 遇到一個百度地圖獲取不到經緯度,報錯如下NetWork location failed because baidu location service can not decrypt the request query, please check the so file

【已解決】呼叫地圖API將城市轉換為經緯度問題

先獲取城市名,如:安徽合肥、上海...,再通過調取百度地圖的API來獲取相應的經緯度。 url 正確格式應該為: url = 'http://api.map.baidu.com/geocoder/v2/?address=%s&output=json&ak=

關於android開發地圖地址轉換座標資訊的教程

</pre>個人原創 轉載宣告即可!!<pre name="code" class="java">GeoCodeOption geoCodeOption = new GeoCodeOption (); GeoCoder gc = GeoCod

android 地圖定位准問題

1、你要用百度地圖的定位座標,否則是有偏差的 2、你通過 BDLocation location 獲取座標系的時候,你看看你的 LocationClientOption option = new

iOS地圖能實時定位問題

專案中加入了百度地圖,但是發現一個問題,就是有些時候可以實時更新位置,有些時候則不行。然後排查問題,第一次進去的時候可以實時更新位置,然後第二次進去的時候不能實時更新位置,可能有些人已經猜到了問題的所在,就是第一次進去的時候生成的一些東西,在你退出的時候被登出了,然後第二次進

解決後臺傳入地圖經緯度精度問題

百度地圖經緯度 接受的是  double型別, 但是, 實際開發中, 後臺給傳入的可能是 精度為 float的  nsstring  型別.   如果直接用   [mapInfo.latitude d

android地圖撒點標識後臺附近的人座標點及使用者頭像

主要的用途是讓當前使用者知道自己還有哪些使用者在使用此款app,為實現後續的約跑,聊天等功能做鋪墊。 要知道附近其他使用者必須先知道自己的定位,那就要用到之前文章中提到的定位功能,這裡不再講解。 呼叫後臺介面上傳當前使用者的x、y座標點。獲取後臺傳回的使用者的物件list。

地圖使用之-----vue專案地圖的應用以及遇到的一些問題

我們在專案開發時對於地圖應用也是比較常見的,因為百度地圖的開發文件都是基於HTML檔案的,並沒有介紹在Vue專案中的應用,而且網上關於在vue中的應用也比較少,官網的文件還是很容易看的懂,但是應用到vue中還是會遇到很多問題的,下面我就分享一些我在vue專案使用百度地圖的體會

解決webview開啟地圖空白問題

WebSettings中加入一下配置即可解決問題 settings.setDomStorageEnabled(true); settings.setBlockNetworkImage(false); settings.setBlockNetworkLoads(false);

地圖 彈窗效果,標註總顯示在左上角

scroll coder 自動 poi level edr local board 放大縮小 現象一: 地圖彈窗先隱藏 ->顯示地圖彈窗->設置marker -> 設置centerAndZoom   看效果標註層定點位置有問題(因顯隱),中心點還是相對

Android 地圖如何讓所有的Marker都顯示在螢幕範圍內。

前言:        高德地圖有方法直接呼叫就可以,總結下百度地圖的(直接複製就可以) 程式碼: LatLngBounds.Builder builder = new LatLngBounds.B

地圖API 少量點海量點 自定義新增資訊

開發中遇到需要地圖展示使用者座標點需求,在上一篇文章中解決載入大量點卡頓。需求中提到點選代表使用者發表的動態需要彈出資訊框,找了api中的資訊視窗例項暫時不用考慮圖片,就選擇純文字資訊視窗展示。// 百度地圖API功能 var map = new BMap.Map("all

地圖上大資料量點的顯示(基於…

     百度地圖API中在新增超過2000個點時,以傳統的AddOverlay()的方式新增覆蓋物(標記)會出現顯示不全,地圖縮放或者拖動時非常卡頓,甚至瀏覽器頁面崩潰。      好在百度提供了百度lbs雲的資料圖層功能,可以將海量使用者資料的在地圖展示。使用者可以建立並上傳自己的資料麻點圖,製作