1.获取屏幕中心点的经纬度:
-(void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
BMKMapPoint bmkmappoint;
bmkmappoint.x = _mapView.visibleMapRect.origin.x+_mapView.visibleMapRect.size.width/2.0;
bmkmappoint.y = _mapView.visibleMapRect.origin.y+_mapView.visibleMapRect.size.height/2.0;
CLLocationCoordinate2D coordinate = BMKCoordinateForMapPoint(bmkmappoint);
NSLog(@"当前显示在屏幕中心点的经纬度是:%f,%f",coordinate.latitude,coordinate.longitude);
}
2.*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0xb894d60> was mutated while being enumerated.'
在同一时间,不同的线程同时读取和修改了NSMutaleArray。
解决办法:避免多线程同时去修改一个对象, 避免做遍历时,这个对象被修改,根据这个思想,可以考虑加锁,或者直接使用atomic的方式来做。
错在了这里: [_mapView removeAnnotations:_mapView.annotations];
解决方法:在添加Annotations时,将Annotations添加到一个数组里array,[_mapView removeAnnotations:array];
3.针对标注出来时就选中的问题:
在网上找了一些资料,说的解决方法是:
1).[(BMKPinAnnotationView*)newAnnotation setSelected:YES animated:YES];
2).[mapViewselectAnnotation:[mapView.annotationsobjectAtIndex:i]animated:animated];
这样,还不如自己封装一个继承于BMKAnnotationView的view,在BMKAnnotationView上添加一个标注uilabel&气泡image
4.做百度地图时,用到监听,就是用kvo监听mapview的zoolevel的变化,但是在你双击地图时,地图的zoomlevel发生变化了,但是它不能调用监听方法,我这里的处理方法是:重新设置一下它的zoomlevel,就是自己set一下mapview的zoomlevel,然后才会调用。没有想到其他的好方法。。。
5.在其他软件中打开百度地图,并在百度软件中实现导航,搜索等。
6.最近有人问我为什么地图打开是空的,只有网格?包括百度提供的demo也是空的,原因很简单,百度折腾的。
7.有时候觉得百度地图挺kang die 的,我在做百度地图相关功能的时候发现,内存占用真的很厉害,好几十兆,但是我运行过一次高德的demo,发现二者相差很多啊,不知道为什么。。。。。。