MAP
来源:互联网 发布:四川理工学院知乎 编辑:程序博客网 时间:2024/06/09 17:08
//
// ViewController.m
// 地图锚点
//
// Created by 杜建军 on 2017/12/14.
// Copyright © 2017年 杜建军. All rights reserved.
//
import “ViewController.h”
import
import
pragma mark –手势回调
(void) longPress:(UILongPressGestureRecognizer*)gesture{
//获取长按点的坐标
CGPoint pos = [gesture locationInView:self.mapView];
//将长按点的坐标转换为经度、维度值
CLLocationCoordinate2D coord = [self.mapView convertPoint:pos
toCoordinateFromView:self.mapView];
// 将经度、维度值包装为CLLocation对象
CLLocation* location = [[CLLocation alloc]initWithLatitude:coord.latitude
longitude:coord.longitude];
//根据经、纬度反向解析地址
[_geocoder reverseGeocodeLocation:location completionHandler:
^(NSArray *placemarks,NSError *error)
{
if (placemarks.count >0 && error ==nil)
{
// 获取解析得到的第一个地址信息
CLPlacemark* placemark = [placemarks objectAtIndex:0];
// 获取地址信息中的FormattedAddressLines对应的详细地址
NSArray* addrArray = placemark
.addressDictionary[@”FormattedAddressLines”];
// 将详细地址拼接成一个字符串
NSMutableString* address = [[NSMutableString alloc]init];
for(int i =0 ; i < addrArray.count ; i ++)
{
[address appendString:addrArray[i]];
}// 创建MKPointAnnotation对象——代表一个锚点 MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init]; annotation.title = placemark.name; annotation.subtitle = address; annotation.coordinate = coord; // 添加锚点 [self.mapView addAnnotation:annotation]; }
}];
}
pragma mark -点击回到输入的的经纬度位置
- (IBAction)goClicked:(id)sender{
//关闭两个文本框的虚拟键盘
[self.latitudeField resignFirstResponder];
[self.longitudeField resignFirstResponder];
//纬度
NSString* latitudeStr =self.latitudeField.text;
//经度
NSString* longtitudeStr =self.longitudeField.text;
//如果用户输入的经度、纬度不为空
if (latitudeStr !=nil && latitudeStr.length >0
&& longtitudeStr != nil && longtitudeStr.length >0)
{
// 调用自己实现的方法设置地图的显示位置和显示区域
[self locateToLatitude:latitudeStr.floatValue
longitude:longtitudeStr.floatValue];
}
}
pragma mark –自定义封装定位方法
(void)locateToLatitude:(CGFloat)latitude longitude:(CGFloat)longitude{
//设置地图中心的经、纬度
CLLocationCoordinate2D center = {latitude , longitude};
//设置地图显示的范围,
MKCoordinateSpan span;
//地图显示范围越小,细节越清楚
span.latitudeDelta =0.01;
span.longitudeDelta =0.01;
// 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。
MKCoordinateRegion region = {center,span};
//设置当前地图的显示中心和显示范围
[self.mapView setRegion:region animated:YES];// 创建MKPointAnnotation对象——代表一个锚点
MKPointAnnotation* annotation = [[MKPointAnnotation alloc]init];
annotation.title =@”北京石羿科技发展有限公司”;
annotation.subtitle =@”海淀区中关村软件园”;CLLocationCoordinate2D coordinate = {latitude , longitude};
annotation.coordinate = coordinate;
// 添加锚点
[self.mapView addAnnotation:annotation];
}
pragma mark -自定义锚点
// MKMapViewDelegate协议中的方法,该方法的返回值可用于定制锚点控件的外观
- (MKAnnotationView ) mapView:(MKMapView )mapView
viewForAnnotation:(id ) annotation{
static NSString* annoId =@”fkAnno”;
//获取可重用的锚点控件MKAnnotationView* annoView = [mapView dequeueReusableAnnotationViewWithIdentifier:annoId];//如果可重用的锚点控件不存在,创建新的可重用锚点控件if (!annoView){ annoView= [[MKAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annoId]; /* 如果不想改变锚点控件的图片,只想改变颜色,则可创建MKPinAnnotationView实例 再修改MKPinAnnotationView对象的pinColor属性即可。 */}//为锚点控件设置图片annoView.image = [UIImage imageNamed:@"pos.gif"];//设置该锚点控件是否可显示气泡信息annoView.canShowCallout =YES;//定义一个按钮,用于为锚点控件设置附加控件UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];//为按钮绑定事件处理方法[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];// 可通过锚点控件的rightCalloutAccessoryView、leftCalloutAccessoryView设置附加控件annoView.rightCalloutAccessoryView = button;return annoView;
}
pragma mark -自定义锚点 –里面的详情按钮
(void) buttonTapped:(id)sender
{
NSLog(@”您点击了锚点信息!”);
}(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
- map
- MAP
- map
- MAP
- map
- map
- map
- Map
- Map
- Map
- map
- map
- Map
- .map
- map
- MAP
- map
- Map
- C代码优化方案
- 百度地图导航工具类,包含骑行步行及驾车导航
- nginx 启动 停止
- 举起双手
- java线程创建方法只有两个?NO! 异步计算的结果如何拿到?
- MAP
- 数据结构笔记(1)递归
- 试水VISA编程(2)——一键读取示波器数据
- 图像显示—关于MATLAB里显示.mat形式的图像
- 解决mysql"Access denied for user'root'@'IP地址'"问题
- Vue2.0 框架配置:vue-cli + vue-router + vuex
- git记住账号密码
- 数据结构笔记(2)线性表
- Nginx配置负载均衡