扫码关注官方订阅号
求大神解答:百度地图的poi如何调用,比如我想在程序里面写死“北京”“餐厅”,然后在客户端搜索“海底捞”,搜索结果都是餐厅这一类中的。而不是在北京这个范围内搜索“海底捞”,结果中不仅有餐厅,还有超市等等,这样就没意义了。
ringa_lee
随手写一个DEMO:
- (void)viewDidLoad { [super viewDidLoad]; _search = [[BMKSearch alloc]init]; _search.delegate = self; // 设置地图级别 [_mapView setZoomLevel:13]; _mapView.isSelectedAnnotationViewFront = YES; //发起POI检索 BOOL flag = [_search poiSearchInCity:@"武汉" withKey:@"武汉协和医院" pageIndex:0]; if(flag){ NSLog(@"success!"); }else{ NSLog(@"error!"); } }
- (void)onGetPoiResult:(NSArray*)poiResultList searchType:(int)type errorCode:(int)error { // 清楚屏幕中所有的annotation NSArray* array = [NSArray arrayWithArray:_mapView.annotations]; [_mapView removeAnnotations:array]; BMKPointAnnotation* item = [[BMKPointAnnotation alloc]init]; // 30.5907940162,114.2823383453 CLLocationCoordinate2D coor; coor.latitude = 30.5907940162; coor.longitude = 114.2823383453; item.coordinate = coor; item.title = @"武汉协和医院"; [_mapView addAnnotation:item]; _mapView.centerCoordinate = coor; }
/** *根据anntation生成对应的View *@param mapView 地图View *@param annotation 指定的标注 *@return 生成的标注View */ - (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id <BMKAnnotation>)annotation { // 生成重用标示identifier NSString *AnnotationViewID = @"xieheMark"; // 检查是否有重用的缓存 BMKAnnotationView* annotationView = [view dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID]; // 缓存没有命中,自己构造一个,一般首次添加annotation代码会运行到此处 if (annotationView == nil) { annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID]; ((BMKPinAnnotationView*)annotationView).pinColor = BMKPinAnnotationColorRed; // 设置重天上掉下的效果(annotation) ((BMKPinAnnotationView*)annotationView).animatesDrop = YES; } // 设置位置 annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5)); annotationView.annotation = annotation; // 单击弹出泡泡,弹出泡泡前提annotation必须实现title属性 annotationView.canShowCallout = YES; // 设置是否可以拖拽 annotationView.draggable = NO; return annotationView; }
搜索前直接硬给他增加到前面呗
高德API这边,搜索类型比较全,推荐你一下。不光有餐厅,还有很多小门类http://api.amap.com/Public/down/AMap_Api_Table.zip 可以下载看看! // 第一个参数表示搜索字符串,第二个参数表示POI搜索类型 // 第三个参数表示POI搜索区域(空字符串代表全国) query = new PoiSearch.Query(keyWord, "餐厅", cityCode); query.setPageSize(10);// 设置每页最多返回多少条poiitem query.setPageNum(currentPage);//设置查第一页 PoiSearch poiSearch = new PoiSearch(this,query); poiSearch.setBound(new SearchBound(new LatLonPoint(locationMarker.getPosition().latitude, locationMarker.getPosition().longitude), 1000)); poiSearch.setOnPoiSearchListener(this); poiSearch.searchPoiAsyn();
我用C# 写过POI采集软件,楼主可以互相交流下啊。 我QQ:1175441108
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
随手写一个DEMO:
搜索前直接硬给他增加到前面呗
高德API这边,搜索类型比较全,推荐你一下。不光有餐厅,还有很多小门类http://api.amap.com/Public/down/AMap_Api_Table.zip 可以下载看看!
// 第一个参数表示搜索字符串,第二个参数表示POI搜索类型
// 第三个参数表示POI搜索区域(空字符串代表全国)
query = new PoiSearch.Query(keyWord, "餐厅", cityCode);
query.setPageSize(10);// 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);//设置查第一页
PoiSearch poiSearch = new PoiSearch(this,query);
poiSearch.setBound(new SearchBound(new LatLonPoint(locationMarker.getPosition().latitude,
locationMarker.getPosition().longitude), 1000));
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPoiAsyn();
我用C# 写过POI采集软件,楼主可以互相交流下啊。 我QQ:1175441108