从百度地图api 获取距离获取从哪里到哪里的距离

【图文】从地图是获取信息_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
从地图是获取信息
大小:875.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢根据百度地图实现附近资源的距离排序 - 简书
根据百度地图实现附近资源的距离排序
先上效果图(数据是造的,UI上四个items就经纬度不一样):
根据当前位置从近到远排序
其实这个很简单,额.....但是还是觉得总结还是进步的关键。
先说思路:先根据接口返回的数据(经纬度)、根据百度地图的当前定位,然后计算出每条数据到到当前点的距离(精确度最好要高,)。 这里我使用数组arrayKeys保存所有的距离。然后创建一个字典dataDic把当前距离distance作为key,values为key对应下的数据model。然后我们将数据arrayKeys进行排序。这样只要arrayKeys排序了,对应的model其实也相当于排序了。
贴出关键代码:
NSDictionary *params = @{@"networkProvince":@"安徽",@"pageIndex":@(1),@"pageSize":@(10)};
[AFNetworkTool GET:queryNetworkListUrl parameters:params showHUD:YES success:^(id returnData) {
NetworkListModel *model = [NetworkListModel mj_objectWithKeyValues:returnData];
self.dataArray = (NSMutableArray *)model.data.
//已无更多数据
if (self.dataArray.count==0) {
//停止上拉刷新
[self.tableview.mj_footer endRefreshingWithNoMoreData];
if (self.isLocationOK) {
//获取所有key的集合
NSMutableArray *arrayKeys = [NSMutableArray array];
//key:距离
values:模型
NSMutableDictionary *dataDic = [NSMutableDictionary dictionary];
for (int i = 0; i & self.dataArray. i++) {
NetworkListDetail *dictModel = self.dataArray[i];
//根据用户指定的两个坐标点,计算这两个点的实际地理距离。核心代码如下:
BMKMapPoint point1 = BMKMapPointForCoordinate(self.locationCoordinate2D);
BMKMapPoint point2 = BMKMapPointForCoordinate(CLLocationCoordinate2DMake([dictModel.network_latitude doubleValue],[dictModel.network_longitude doubleValue]));
CLLocationDistance distance = BMKMetersBetweenMapPoints(point1,point2);
YLLog(@"self.arrayRecivedKeys ---distance %fd",distance);
[arrayKeys addObject:[NSNumber numberWithDouble:distance]];
[dataDic setObject:dictModel forKey:[NSNumber numberWithDouble:distance]];
self.dictRecivedValues = dataD
//排序arrayKeys
NSArray *sortedArray = [arrayKeys sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
if ([obj1 floatValue] & [obj2 floatValue]) {
return NSOrderedA
return NSOrderedD
self.arrayAllKeys = sortedA
YLLog(@"arrayAllKeys --- %@",self.arrayAllKeys);
self.totalPage= [model.data.totalPageNum integerValue];
if (self.dataArray) {
//记录当前页
self.currentPage = 1;
//重新载入数据
[self.tableview reloadData];
//停止下拉刷新
[self.tableview.mj_header endRefreshing];
} failure:^(NSError *error) {
//停止下拉刷新
[self.tableview.mj_header endRefreshing];
地图代理方法里:
//处理位置坐标更新
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
YLLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);
//发起反向地理编码检索
_searcher =[[BMKGeoCodeSearch alloc]init];
_searcher.delegate =
CLLocationCoordinate2D pt = (CLLocationCoordinate2D){userLocation.location.coordinate.latitude, userLocation.location.coordinate.longitude};
self.locationCoordinate2D =
BMKReverseGeoCodeOption *reverseGeoCodeSearchOption = [[
BMKReverseGeoCodeOption alloc]init];
reverseGeoCodeSearchOption.reverseGeoPoint =
BOOL flag = [_searcher reverseGeoCode:reverseGeoCodeSearchOption];
YLLog(@"反geo检索发送成功");
self.isLocationOK = YES;
[self setupRefresh:self.tableview];
YLLog(@"反geo检索发送失败");
self.isLocationOK = NO;
[self setupRefresh:self.tableview];
[_locService stopUserLocationService];
//接收反向地理编码结果
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:
(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
if (error == BMK_SEARCH_NO_ERROR) {
_mapLb.text = [NSString stringWithFormat:@"当前位置:%@",result.address];
YLLog(@"%@",result.address);
YLLog(@"%@",result.addressDetail.province);
_mapLb.text = @"当前定位失败";
YLLog(@"抱歉,未找到结果");
Tableview代理方法:
#pragma mark -UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.dataArray.
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
AfterServerCell *cell = [AfterServerCell afterServerCellWithTableView:tableView];
cell.model = self.dictRecivedValues[self.arrayAllKeys[indexPath.row]];
cell.model = self.dataArray[indexPath.row];
cell.distance = self.arrayAllKeys[indexPath.row];
好了就是这样了,=
不断探索,不断积累。
/ShuangqiShiDesigned by -
地图操作&模式切换
地图操作指南()
1.移动地图:在地图上按住鼠标左键拖动或点击地图左上方的方向图标移动。
2.放大/缩小地图:双击地图上的某一点可以直接放大。也可以通过点击地图左上方的加减号或滑动杆来缩放。
3.地图画面右上角的三个按钮是用来切换地图显示模式的。从左至右分别代表“街道电子地图”,“纯卫星地图”和“有标注卫星地图”。
4.本导航地图支持全球各国城市地址,中国城市请用中文搜索,国外城市请用英文或其他相应国语言进行搜索。
5.查询国内城市步行、徒步路线地图,推荐使用:
6.查询国内城市打车费用、出租车起步价,推荐使用:【图文】从地图上获取信息_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
从地图上获取信息
大小:664.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 高德地图获取两点距离 的文章

 

随机推荐