React?高德地圖進京證路線規(guī)劃問題記錄(匯總)
一、加載問題
用高德地圖做了個進京證路線規(guī)劃的功能,官網(wǎng)也是有 React 代碼示例。但是吧,這個Demo有問題,地圖是能加載成功,但是其他功能再用 map 這個變量肯定不行,果不其然是null,處理也簡單,把公共變量都管理起來就行了。
const [map, setMap] = useState(null);
const [AMap, setAMap] = useState(null);
const [driving, setDriving] = useState(null);
const [mass, setMass] = useState(true);
useEffect(() => {
window._AMapSecurityConfig = {
securityJsCode: "「你申請的安全密鑰」",
};
AMapLoader.reset();
AMapLoader.load({
key: "", // 申請好的Web端開發(fā)者Key,首次調(diào)用 load 時必填
version: "2.0", // 指定要加載的 JSAPI 的版本,缺省時默認(rèn)為 1.4.15
plugins: ["AMap.Driving"], //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多個如:['...','...']
}).then((_AMap) => {
const _map = new _AMap.Map("container", {
resizeEnable: true,
viewMode: '2D', // 默認(rèn)使用 2D 模式,如果希望使用帶有俯仰角的 3D 模式,請設(shè)置 viewMode: '3D'
zoom: 11, // 初始化地圖層級
center: [116.397428, 39.93000] // 初始化地圖中心點
});
_map.on('complete', () => {
setAMap(_AMap)
});
setMap(_map);
const driving = new _AMap.Driving({
map: _map
});
setDriving(driving);
}).catch((e) => {
console.log(e);
});
return () => {
map?.destroy();
};
}, [])二、標(biāo)注點問題
普通點標(biāo)記多了會很慢,高德提供了海量點標(biāo)記功能(攝像頭太多了),如果文字都顯示是又慢又亂,所有單獨綁定單擊事件,并用 Text 文本標(biāo)記。
const camera = []; //你的數(shù)組
const datas = [];
const styles = [{
url: 'https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
anchor: 'bottom-center',
size: new AMap.Size(21, 27),
zIndex: 1,
}]
for (let index = 0; index < camera.length; index++) {
const c = camera[index];
datas.push({
lnglat: c.position,
name: c.name,
style: 0 //該數(shù)據(jù)的取值為樣式數(shù)組對應(yīng)的對象索引
});
}
// 海量標(biāo)記攝像頭
const _mass = new AMap.MassMarks(datas, {
style: styles
})
let marker = null;
_mass.on('click', (e) => {
if (marker === null || e.data.lnglat !== marker._opts.position) {
if (marker !== null) {
map.remove(marker)
}
marker = new AMap.Text({
map: map,
position: e.data.lnglat,
anchor: 'top-center',
offset: [0, -60],
text: e.data.name,
style: {
"font-Size": "14px",
"padding": "5px"
},
zIndex: 2
});
}
});
_mass.setMap(map)
setMass(_mass);
三、效率問題
目前規(guī)劃路線的效率有點慢,主要是攝像頭過多,按步全量循環(huán)算路太耗時,下一步更新要把所有的攝像頭分區(qū),按線路走向過濾算路,理論上能減少一半以上的計算時間,期待的搓搓小手。大家感興趣的可以在微信公眾號體驗一下,希望可以幫助到有需要的人。
到此這篇關(guān)于React 高德地圖 進京證 路線規(guī)劃 問題小記的文章就介紹到這了,更多相關(guān)React 高德地圖 進京證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React?Refs?的使用forwardRef?源碼示例解析
這篇文章主要為大家介紹了React?之?Refs?的使用和?forwardRef?的源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
React+Antd+Redux實現(xiàn)待辦事件的方法
這篇文章主要介紹了React+Antd+Redux實現(xiàn)待辦事件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
react使用axios進行api網(wǎng)絡(luò)請求的封裝方法詳解
這篇文章主要為大家詳細(xì)介紹了react使用axios進行api網(wǎng)絡(luò)請求的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
react學(xué)習(xí)每天一個hooks?useWhyDidYouUpdate
這篇文章主要為大家介紹了react學(xué)習(xí)每天一個hooks?useWhyDidYouUpdate使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
react-native 實現(xiàn)購物車滑動刪除效果的示例代碼
這篇文章主要介紹了react-native 實現(xiàn)購物車滑動刪除效果的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解
這篇文章主要為大家介紹了React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
React創(chuàng)建組件的三種方式及其區(qū)別是什么
在React中,創(chuàng)建組件的三種主要方式是函數(shù)式組件、類組件和使用React Hooks的函數(shù)式組件,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2023-08-08
react中的useImperativeHandle()和forwardRef()用法
這篇文章主要介紹了react中的useImperativeHandle()和forwardRef()用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08

