使用高德地圖時,遇到的兩個小問題及解決方法

問題一

問題描述:
當(dāng)?shù)貓D上有遮擋層view時,希望當(dāng)設(shè)置當(dāng)前地圖的中心點(diǎn)時,能移動地圖中心點(diǎn)到?jīng)]有view部分的中心位置。

amap_center

解決方法:
需要自己計算沒有View部分的中心位置相對屏幕的具體坐標(biāo),然后可以參考MAMapView的下面方法進(jìn)行設(shè)置

///地圖的視圖錨點(diǎn)。坐標(biāo)系歸一化,(0, 0)為MAMapView左上角,(1, 1)為右下角。默認(rèn)為(0.5, 0.5),即當(dāng)前地圖的視圖中心 (since 5.0.0)
@property (nonatomic, assign) CGPoint screenAnchor;

問題二

問題描述:
高德地圖加載點(diǎn)標(biāo)記時,一個經(jīng)緯度只能添加一個點(diǎn)標(biāo)記,如果出現(xiàn)坐標(biāo)點(diǎn)重復(fù)的問題,后添加的點(diǎn)將不會顯示在地圖上。

解決方法:
可以通過自定義點(diǎn)標(biāo)記的數(shù)據(jù)模型類MAPointAnnotation,重寫isEqual方法。默認(rèn)是只比較經(jīng)緯度的hash字符串,你可以定義一些自己需要的比較邏輯,self表示當(dāng)前地圖上的點(diǎn),object表示即將添加的點(diǎn),如果返回YES,則不添加;如果返回NO,則添加并替換原來的點(diǎn)。

- (NSUInteger)hash
{
    NSString *toHash = [NSString stringWithFormat:@"%.5F%.5F", self.coordinate.latitude, self.coordinate.longitude];
    return [toHash hash];
}

- (BOOL)isEqual:(id)object
{
    //判斷倆個點(diǎn)坐標(biāo)是否一致
    BOOL isEqual = [self hash] == [object hash];
    //添加自己的比較邏輯
    return isEqual;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容