地图地位

//
//  ViewController.m
//
//
//  Created by  on 16/4/2.
//  Copyright © 2016年 . All rights reserved.
//

#import "ViewController.h"
#import <MapKit/MapKit.h>

@interface ViewController ()<MKMapViewDelegate,UISearchBarDelegate>
{
    UISearchBar * searchBar1 ;
    MKMapView * mapview;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //地图初始化
    mapview = [[MKMapView alloc]initWithFrame:CGRectMake(0, 80, self.view.frame.size.width, self.view.frame.size.height)];
    //设置地图类型
    mapview.mapType = MKMapTypeStandard ;
    //设置代理
    mapview.delegate = self;
    //设置地图 显示用户位置  可以滚动  可以粘合  可以缩放  不可旋转
    mapview.showsUserLocation = YES;
    mapview.rotateEnabled = NO;
    mapview.scrollEnabled = YES;
    mapview.zoomEnabled = YES;
    mapview.pitchEnabled = YES;
    //添加子视图
    [self.view addSubview:mapview];
    
    //初始化搜索条
    searchBar1 = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 60)];
    searchBar1.delegate = self;
//    searchBar1.text = @"北京市动物园";
    searchBar1.placeholder = @"请输入地址";
//    searchBar1.showsBookmarkButton = YES;
//    searchBar1.showsCancelButton = YES;
    [self.view addSubview:searchBar1];
 
}
//用户在搜索框中输入内容的时候   改变按钮的名字  变成“搜索”
-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    searchBar1.showsCancelButton = YES;
    for(id cc in [searchBar1.subviews[0] subviews])
    {
        if ([cc isKindOfClass:[UIButton class]]) {
            
            UIButton * btn = (UIButton *)cc;
            [btn setTitle:@"搜索" forState:UIControlStateNormal];
        }
    }
}
//

// 当用户单击“取消”按钮时激发该方法
// 由于我们重定义了该控件的外观——将取消按钮的文本改成了“搜索”,因此单击取消按钮也执行搜索
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [searchBar1 resignFirstResponder];
    NSString * str = searchBar1.text;
    [self GotoLocation:str];
}
// 当用户单击虚拟键盘上的“搜索”按钮时激发该方法
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar1 resignFirstResponder];
    NSString * str = searchBar1.text;
    if (str.length > 0) {
        [self GotoLocation:str];
    }else
    {
        NSLog(@"地址错误");
    }
}
//自己定义的方法  用来跳转至相应地方
-(void)GotoLocation:(NSString *)address
{
    CLGeocoder * geocoder = [[CLGeocoder alloc]init];
    [geocoder geocodeAddressString:address completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        
        if (placemarks.count >0 && error == nil) {
            
            CLPlacemark * placemark = [placemarks lastObject];
            CLLocation * location = placemark.location;
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                //跳至指定位置
                [mapview setRegion:MKCoordinateRegionMake(location.coordinate, MKCoordinateSpanMake(0.01, 0.01))];
                
                //锚点
                MKPointAnnotation * point = [[MKPointAnnotation alloc]init];
                point.coordinate = location.coordinate;
                point.title = placemark.name;
                point.subtitle = [NSString stringWithFormat:@"%@-%@-%@-%@",placemark.country,placemark.administrativeArea,placemark.locality,placemark.subLocality];
                
                [mapview addAnnotation:point];
                [mapview selectAnnotation:point animated:YES];
                
            });
            
        }else{
            NSLog(@"没有拼配的数据");
        }

}];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

时间: 2024-10-05 22:10:27

地图地位的相关文章

Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能

转载请标明出处:http://blog.csdn.net/tanzuai/article/details/43835431 目前百度地图SDK所集成的检索服务包括:POI检索.公交信息查询.线路规划.地理编码.在线建议查询.短串分享. 本篇博客将先介绍POI检索和在线建议查询(在地图地位功能基础上实现的,还不知道定位的童靴,请参考Android 百度地图 SDK v3.3.0 (二)--- 地图定位和图层展示) 百度地图SDK提供三种类型的POI检索:周边检索.区域检索和城市内检索.下面将以城市

iOS 地图源及目的地定位、划线和系统导航的使用

最近在做一些关于地图的使用,才发现以前了解的东西很浅,很多细节上的东西没有弄清楚,在这里我想记录一下.好记性不如烂笔头,何况我这烂记性,就更得需要一个好笔头了.废话就不多说,下面就是我在使用系统地图的思路和代码.新手上路,不另指教! Step1 导入 Mapkit.framework 框架 Step2 引入头文件 #import <MapKit/MapKit.h> //地图框架 #import <CoreLocation/CoreLocation.h> //定位和编码框架 如果只是

重置iOS模拟器,虚拟定位

重置iOS模拟器,虚拟定位--妖妖 1.在写百度地图地位的时候,由于没有真机,只能利用模拟器的虚拟定位了 2.模拟器的长时间使用,或者是无法输入,手势失灵,或是定位,授权之类的问题,可以重置一下模拟器

HTML5+规范:Geolocation(管理设备位置信息)

Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度.纬度等.通过plus.geolocation可获取设备位置管理对象.虽然W3C已经提供标准API获取位置信息,但在某些平台存在差异或未实现,为了保持各平台的统一性,定义此规范接口获取位置信息. 1.方法 1.1.getCurrentPosition: 获取当前设备位置信息 void plus.geolocation.getCurrentPosition( successCB, errorCB, option ); 说明:位

Salesforce 自定义页面并实现手机端自适应

一.使用salesforce实现自定义的"任务签到"页面,实现了百度地图地位功能 1)首先必须创建一个自定义页面 2)创建salesforece对象 3)创建控制器 4)进入页面写代码 二.代码实现 前台页面代码 <apex:page showHeader="false" sidebar="false" standardStylesheets="false" showQuickActionVfHeader="f

HTML5+规范:Geolocation(管理设备位置信息) 定位

Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度.纬度等.通过plus.geolocation可获取设备位置管理对象.虽然W3C已经提供标准API获取位置信息,但在某些平台存在差异或未实现,为了保持各平台的统一性,定义此规范接口获取位置信息. 1.方法 1.1.getCurrentPosition: 获取当前设备位置信息 void plus.geolocation.getCurrentPosition( successCB, errorCB, option ); 说明:位

Net微信网页开发之使用微信JS-SDK获取当前地理位置

前言: 前段时间有一个关于通过获取用户当前经纬度坐标,计算出该用户距离某指定地点之间的距离.因为做这个项目需要能够获取到比较精确的经纬度坐标,刚开始使用的是百度地图结果发现百度地图地位不太准确(有时候相差的比较的大,后来了解到了百度获取用户经纬度与用户当前使用的网络有很大的关系),后来换成了高德地图结果还是一样.最后我想刚好做的是个微信网站项目,为什么不使用微信自带接口呢?所以最后使用了微信JS-SDK来获取用户当前地理位置的接口. 微信JS-SDK的使用步骤,配置信息的生成获取讲解: 关于JS

Android地图开发之地图的选择

做lbs开发差不多快2年了,地图相关的产品也差不多做了3个了,用到过的地图包括google地图.高德地图.百度地图.图吧.Osmdroid,今天总结下,方便大家开发时选择合适的地图. 首先说定位模块选择,高德地图.百度地图现在都有了单独的地位sdk,且都支持全球定位,都是非常不错的选择.我现在做的项目对定位要求很高,现在的选择是gps定位使用系统定位方式,基站定位使用百度定位,gps连接成功使用系统定位接口,gps断开切换到百度基站定位. gps定位,百度和高德都用过,但是测试发现没有同类产品统

地图市场

阅读时间:2015-9-24 书写时间:2015-9-24 发布时间:2015-3-20  来源: CCTIME飞象网 通过国内知名市场研究机构CNIT-Research(中国IT研究中心)发布的<2014年中国手机地图市场研究年度报告>显示 百度凭借其强大的品牌优势,整合各方资源,和各行业进行合作,提供丰富的生活服务信息,构建了基于地图的生活服务平台 在基础数据分析维度,主要手机地图的整体差异不大,在地标信息.卫星图.路网数据三个指标中,百度地图.高德地图.腾讯地图三家并未拉开差距 在品牌层