1. 程式人生 > >iOS 點/長按地圖放/ 移除大頭針並顯示地址

iOS 點/長按地圖放/ 移除大頭針並顯示地址

// 首先建立一個類 接受 <MKAnnotation

LHAnnotation.h

#import <Foundation/Foundation.h>

#import <MapKit/MKMapView.h>

@interface LHAnnotation : NSObject<MKAnnotation>

// Center latitude and longitude of the annotion view.

// The implementation of this property must be KVO compliant.

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

// Title and subtitle for use by selection UI.

@property (nonatomic, copy) NSString *title;

@property (nonatomic, copy) NSString *subtitle;

@end

// 地圖頁面

MapViewController.h

#import "ViewController.h"

#import <MapKit/MKMapView.h>

@interface MapViewController : ViewController<CLLocationManagerDelegate>

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end

MapViewController.m

#import "MapViewController.h"

#import "LHAnnotation.h"

@interface MapViewController ()<MKMapViewDelegate>

@end

@implementation MapViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

//    UITapGestureRecognizer *mTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapPress:)];

    UILongPressGestureRecognizer *mTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(tapPress:)];

    [self.mapView addGestureRecognizer:mTap];

}

- (void)tapPress:(UIGestureRecognizer*)gestureRecognizer {

    [_mapView removeOverlays:_mapView.overlays];

    [_mapView removeAnnotations:_mapView.annotations];

    CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];//這裡touchPoint是點選的某點在地圖控制元件中的位置

    CLLocationCoordinate2D touchMapCoordinate =[self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];//這裡touchMapCoordinate就是該點的經緯度了

    NSLog(@"touching %f,%f",touchMapCoordinate.latitude,touchMapCoordinate.longitude);

    CLGeocoder *geocoder = [[CLGeocoder alloc]init];

    CLLocation *location = [[CLLocation alloc]initWithLatitude:touchMapCoordinate.latitude longitude:touchMapCoordinate.longitude];

    __block NSString *name = nil;

        [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

            for (CLPlacemark *place in placemarks) {

                NSDictionary *location =[place addressDictionary];

                NSLog(@"國家:%@",[location objectForKey:@"Country"]);

                NSLog(@"城市:%@",[location objectForKey:@"State"]);

                NSLog(@"區:%@",[location objectForKey:@"SubLocality"]);

                NSLog(@"位置:%@", place.name);

                NSLog(@"國家:%@", place.country);

                NSLog(@"城市:%@", place.locality);

                NSLog(@"區:%@", place.subLocality);

                NSLog(@"街道:%@", place.thoroughfare);

                NSLog(@"子街道:%@", place.subThoroughfare);

                name = place.name;

                LHAnnotation* annotation=[[LHAnnotation alloc]init];

                annotation.coordinate=CLLocationCoordinate2DMake(touchMapCoordinate.latitude, touchMapCoordinate.longitude);

                annotation.title=name;

                //    [email protected]"123";

                [self.mapView addAnnotation:annotation];

            }

        }];

}

-(void)setMap

{

    self.mapView=[[MKMapView alloc]init];

    self.mapView.frame=self.view.bounds;

    /**

     *mapType

     *

     * MKMapTypeStandard = 0,

     MKMapTypeSatellite,

     MKMapTypeHybrid

     */

    self.mapView.mapType=MKMapTypeStandard;

    /**

     *Set to YES to add the user location annotation to the map and start updating its location

     */

    self.mapView.showsUserLocation=NO;

    /**

     *Zoom and scroll are enabled by default.

     */

    self.mapView.scrollEnabled=YES;

    self.mapView.zoomEnabled=YES;

    /**

     *Rotate and pitch are enabled by default on Mac OS X and on iOS 7.0 and later.

     */

    self.mapView.pitchEnabled=YES;

    self.mapView.rotateEnabled=YES;

    [self.view addSubview:self.mapView];

}


相關推薦

iOS /地圖/ 大頭針顯示地址

// 首先建立一個類 接受 <MKAnnotation>  LHAnnotation.h #import <Foundation/Foundation.h> #import <MapKit/MKMapView.h> @inter

iOS 一行程式碼處理子檢視(、隱藏等)

無需遍歷迴圈,一行程式碼處理子檢視邏輯 移除所有子檢視: [view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 顯示、隱藏所有子檢視 //隱藏所有子檢視 [view.subviews

選按鈕後用jQuery禁止按鈕顯示文字[正在處理...]

通過val設定按鈕的文字,並用attr修改disabled屬性。測試程式碼如下: <html> <body> <form method="get" action="ht

使用百度地圖SDK定位當前位置顯示地圖

package com.shz.baidumap; import android.Manifest; import android.content.pm.PackageManager; import android.os.Bundle; import andr

百度地圖手機端單觸單擊和事件,解決部分手機(小米手機)地圖單擊事件失效,多觸、拖動依然觸發的bug

|| ble apply timeout console dto eat 問題 int /** * Author 嶽曉 * * 對百度地圖的事件擴展,目前擴展了fastclick和longclick, * 解決某些設備click不執行的問題

IOS初學-簡單的手勢操作(單,雙擊,

手勢之前先來個旋轉。其它的簡單動畫同理 對檢視進行旋轉操作 func test8() {         let view1=UIView(frame: CGRect(x: 50, y: 150, width: 200, height: 50));

iOS 實現選圖片放大&儲存圖片

一:簡介 在專案中免不了會遇到,實名認證上傳身份證、繫結銀行卡等功能。在實際操作中呢,會涉及到上傳圖片,在頁面佈局時,可能圖片不是一張,考慮到佈局的美觀等因素,顯示圖片的位置變得很小,如果想檢視上傳的圖片是否清晰,內容是否完整,可能就需要放大才能實現,下面就和大家分享一下我封裝的一類,完美的

ios數字鍵盤,選手勢、滑動、手勢並存,解決手勢衝突問題

嗯,之所以有手勢衝突,是因為數字鍵原來的開發定義的是uibutton,有事件衝突。關掉數字鍵的響應 enabled = false。手勢全部加入到數字鍵的super view,天然的系統就支援流暢的多手勢。如果點選的話,就判斷點選的點是否落在UILabel的frame裡面即可

iOS實現選圖片放大&儲存圖片

一:簡介 在專案中免不了會遇到,實名認證上傳身份證、繫結銀行卡等功能。在實際操作中呢,會涉及到上傳圖片,在頁面佈局時,可能圖片不是一張,考慮到佈局的美觀等因素,顯示圖片的位置變得很小,如果想檢視上傳的圖片是否清晰,內容是否完整,可能就需要放大才能實現,下面就和

移動端阻止默認選中文本和彈出菜單、擊陰影

prevent efault css mce web 點擊 阻止 tran call css:/*阻止默認長按選中文本*/* { /*ios*/ -webkit-touch-callout:none; touch-callout:none; /*安卓

百度地圖API一:根據標註坐標範圍計算顯示級別zoom自適應顯示地圖

var spa get bsp pan nts viewport 百度 getview 百度地圖中根據頁面中的point,自動設置縮放級別和視圖中心,將所有的point在視圖範圍內展示。 var points = [point1, point2,point3];

【Swift 4.0】iOS 11 UICollectionView 拖拽刪除崩潰的問題

又是 bdd val guard global 處理 nat false view 正文   功能     用 UICollectionView 實現兩個 cell 之間的位置交互或者拖拽某個位置刪除   問題     iOS 11 以上拖拽刪除會崩潰,在 i

iOS 自動KVO觀察者

nonatomic format 時機 value set observe fork tor @property 對NSObject寫一個分類: #import <Foundation/Foundation.h> @interface NSObject (F

百度地圖API二:根據標註坐標範圍計算顯示級別zoom自適應顯示地圖

max zoom 天地圖 功能 center 經緯 通過 極值 template 原文:百度地圖API二:根據標註點坐標範圍計算顯示縮放級別zoom自適應顯示地圖 版權聲明:本文為博主原創文章,轉載請註明出處。 https://blo

iOS開發子檢視控制器

OC語法中沒有直接移除子檢視的方法,但是可以通過查詢子檢視來移除 for(UIView *view in [self.view subviews]) { [view removefromsuperview] } 來點直接的:實際上是用了NSArray的mak

RecyclerView條目選和

   RecyclerView雖然很強大,但是沒有點選事件,美中不足!所以需要自己寫點選事件啦。    Activity介面 public class MainActivity extends AppCompatActivity { pr

GridView 使用,GirdView 方法屬性。GirdView 出現右上角圖示,選圖示刪除

介面卡和 ListView 一樣。 GirdView 方法屬性 <GridView android:id="@+id/gv" android:horizontalSpacing="5dp" android:n

iOS swift cookie創建存儲

storage ssa 創建 form hive ios delet view on() 保存網絡請求的cookies,並存儲到UserDefaults中 //保存COOKIES static func saveCookies(for urlStr: Str

白鷺引擎實現選後離開事件繫結

白鷺引擎 版本:5.2.8 描述:實現長按效果 繫結事件: this.物件.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.onPlayClick,this); //離開的事件

Android整合百度地圖-----顯示地圖、定位、顯示地址資訊

一、基礎部分 轉載請註明出處:https://blog.csdn.net/Hunter2916/article/details/82867205 1、下載百度地圖的SDK 下載地址:http://lbsyun.baidu.com/index.php?title=android-locsd