<link rel="stylesheet" >
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://yandex.st/highlightjs/6.2/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script type="text/javascript">
$(document).ready(function(){
$("h2,h3,h4,h5,h6").each(function(i,item){
var tag = $(item).get(0).localName;
$(item).attr("id","wow"+i);
$("#category").append('<a class="new'+tag+'" href="#wow'+i+'">'+$(this).text()+'</a></br>');
$(".newh2").css("margin-left",0);
$(".newh3").css("margin-left",20);
$(".newh4").css("margin-left",40);
$(".newh5").css("margin-left",60);
$(".newh6").css("margin-left",80);
});
});
</script>
<div id="category"></div>
槽點滿滿
不知各位使用過地圖的同僚們有沒有遇到過一個很奇怪的問題:自定義地圖標注AnnotationView時候尤蒿,完全按著高德地圖的Demo寫代碼,當每個AnnotationView模型數(shù)據(jù)不同時候幅垮,快速滑動地圖使得AnnotationView在地圖可視區(qū)域范圍 內腰池、外來回切換時,會出現(xiàn)數(shù)據(jù)混亂忙芒。這個問題是我很久很久之前發(fā)現(xiàn)的示弓,當時我是通過禁用重用機制
來解決的,即是每次AnnotationView出現(xiàn)時都要alloc呵萨,不會從緩存池獲取奏属。前兩天我重新研究了一下,也是各種百度都沒有找到相應的好的解決方法潮峦,無奈硬著頭皮上咯??
現(xiàn)象滿滿
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
這個回調函數(shù)自我感覺和UITableView的重用還不太一樣<也有可能本人水平有限囱皿,當我沒說??>,UITableView的回調有個IndexPath
能夠在這個毒地方把數(shù)據(jù)源和Cell 綁定上忱嘹,現(xiàn)在圖片是有的铆帽,但是一滑動數(shù)據(jù)全亂了,如圖<1>德谅,下圖是我使勁滑動了很多次之后的效果爹橱,可以明顯看到小的AnnotationView邊沿很黑很黑的,而且旁邊還出現(xiàn)了一個不該有的空白的大的AnnotationView,最右側大的AnnotationView也是一樣愧驱,看圖層可以發(fā)現(xiàn)重疊了很多AnnotationView
解決方法
由于自定義的每個AnnotationView的數(shù)據(jù)都不一樣慰技,包括背景圖片,而每個AnnotationView都有一個關聯(lián)的Annotation组砚,所以應該從這兒入手吻商,滑動地圖每次AnnotationView出現(xiàn)在可視區(qū)域內的時候,都會執(zhí)行圖<2>中的 117行
代碼糟红,把對應的數(shù)據(jù)賦值給對應的AnnotationView艾帐,在自定義的AnnotationView類中,一定要重寫- (void)setAnnotation:(id<MAAnnotation>)annotation;
盆偿。具體怎么實現(xiàn)的柒爸,我 Demo 中都注釋好了,需要的話去點擊 Demo 傳送門 去我 Github上下載吧??事扭。
解決之后的效果圖如圖<3>捎稚,無論怎么滑動都不會出現(xiàn)了。
PS:千里之外求橄,始于足下今野,萬分喜愛源自點贊、評論+喜歡??