1. 程式人生 > >Unity ios 高德定位

Unity ios 高德定位

這篇文章主要說的是 Unity 釋出ios 接高德定位  獲取定位資訊  

教程儘量說詳細點

稍後配上工程目錄

1.登入高德開放平臺 主要參照高德文件來   第一步 點選獲取key 然後按照裡面的教程來很詳細,我就不多說了


2.第二步  點選手動部署 注意是手動部署哦 雖然有人說自動部署更好 但是我xcode是個小白一不注意就失敗了。所以我選擇了手動部署,然後下載我裱起來兩個庫檔案。

3.然後就是開啟Unity 建立一個Unity和ios 溝通的指令碼  然後釋出打包Xcode檔案

//定位資訊 
        [DllImport("__Internal")]
        private static extern void initStart();//初始定位

        [DllImport("__Internal")]
        private static extern void LocalIos();//獲取定位

        string m_szAmapLocal = "0|0";

        //button 開始定位  UNIty建立一個按鈕 然後點選按鈕響應這個方法
        public void StartAmap()
        {
            initStart();
            LocalIos();
            Debug.Log("Unity  開始定位");
        }

        //button 獲取定位 Unity 建立一個按鈕 點選響應這個方法
        public void LocateAction()
        {
            Debug.Log("Unity開始蘋果獲取定位");
            LocalIos();
        }

        //儲存地理位置
        public string  AmapLocal()
        {
            return m_szAmapLocal;
        }

        //接受從IOS傳來的地理位置
        void LocateIOSGPS(string s)
        {
            m_szAmapLocal = s;
            Debug.Log("[MsgFrom ios]" + s);
        }

然後 按照 手動部署 然後  需要引入的系統庫檔案  需要申請的許可權   ATS設定      高德官方文件很清楚  建議哈 還是按照文件來 

4.打包出來的xcode檔案找到 點選.xcodeproj開啟專案  將第二步下載的庫檔案拖到xcode裡


然後建立一個AmapUnity.h檔案

<Foundation/Foundation.h>

@interface AmapUnity : NSObject

@end

然後建立一個橋樑檔案 用來溝通c#和ob語言的 AmapUnity  .m檔案

#import "AmapUnity.h"
#import "AmapGaoDe.h"

@implementation AmapUnity

//Unity to  ios  dayin
AmapGaoDe *iapAmap =nil;
void initStart()
{
    NSLog(@"Msg ==========ios 開始定位");
    iapAmap = [[AmapGaoDe alloc] init];
    [iapAmap startActive];
}

void LocalIos()
{
    NSLog(@"Msg ===========獲取 定位");
   [iapAmap locateAction];
}

@end

然後 可能.m檔案會報錯   AmapGaoDe找不到   我們接下來來接高德的SDK了 參照高德官方文件


這塊按照你們的專案需求 參照官方文件  我的只是呼叫了專案需要的一部分

建立了一個AmapGaoDe.h檔案  用來溝通之前的.m檔案

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <AMapLocationKit/AMapLocationKit.h>

@interface AmapGaoDe : UIViewController

@property (nonatomic, strong) AMapLocationManager *locationManager;
- (void)startActive;
- (void)locateAction;
@end
然後 建立.m檔案  高德的sdk 這個檔案裡 按照你們專案需求來  比如:我的專案需求就是獲取經緯度 然後內容如下

#import "AmapGaoDe.h"
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <AMapLocationKit/AMapLocationKit.h>

@interface AmapGaoDe () <AMapLocationManagerDelegate>

@property (nonatomic, copy) AMapLocatingCompletionBlock completionBlock;

@end

@implementation AmapGaoDe
- (void)startActive
{
    //初始化AMapLocationManager物件,設定代理

    [AMapServices sharedServices][email protected]"您的key";

    self.locationManager = [[AMapLocationManager alloc] init];
    
    [self.locationManager setDelegate:self];
    
    // 帶逆地理資訊的一次定位(返回座標和地址資訊  高精度)
    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    //   定位超時時間,最低2s,此處設定為10s
    [self.locationManager setLocationTimeout:10];
    //   逆地理請求超時時間,最低2s,此處設定為10s
    [self.locationManager setReGeocodeTimeout:10];
}
- (void)locateAction
{
    //帶逆地理的單次定位
    //帶逆地理(返回座標和地址資訊)。將下面程式碼中的 YES 改成 NO ,則不會返回地址資訊。
    [self.locationManager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
        
        if (error)
        {
            NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription);
            
            NSString *[email protected]"1|1";
            UnitySendMessage("Main", "LocateIOSGPS",[err UTF8String]);
            
            if (error.code == AMapLocationErrorLocateFailed)
            {
                 return;
            }
            
        }
        
        //定位資訊  經緯度
        NSString *lat;
        lat = [NSString stringWithFormat:@"%f|%f",location.coordinate.longitude,location.coordinate.latitude];
        
        UnitySendMessage("Main", "LocateIOSGPS",[lat UTF8String]);
       
        //逆地理資訊
        if (regeocode)
        {
            NSLog(@"reGeocode:%@", regeocode);
        }
    }];
}
@end  
我採用的設定是:  高精度  單次定位  獲取的值是經緯度 

我們一共是建立了2個.h檔案  2個.m檔案  一共四個檔案 放到Unity 專案的plugins/IOS檔案 下次Unity打包Xcode直接就包含這4個檔案

相關推薦

Unity ios 定位

這篇文章主要說的是 Unity 釋出ios 接高德定位  獲取定位資訊   教程儘量說詳細點 稍後配上工程目錄 1.登入高德開放平臺 主要參照高德文件來   第一步 點選獲取key 然後按照裡面的教程來很詳細,我就不多說了 2.第二步  點選手動部署 注意是手動部署哦 雖

Unity接入定位sdk簡單三步無需與安卓工程互動

原始碼,原工程下載地址:https://download.csdn.net/download/qq_37310110/10729281 參考地址:https://blog.csdn.net/qq_37310110/article/details/83145193 一:高德定位有效key的

Unity與Android交互-Unity接入地圖實現定位以及搜索周邊的功能(使用Android Studio)詳細操作

nac mcc 以及 分享 pack create lis red 效果 剛進公司給安排的任務就是Unity接入高德地圖,算是踩了不少坑總算做出來了,抽點時間寫個博客記錄一下 廢話不多說 先上效果圖 獲取定位並根據手機朝向顯示周邊信息 使用的Unity

Unity接入SDK實現定位

一.在高德官網下載需要對應的SDK  http://lbs.amap.com/api/android-location-sdk    通過SHA1值獲取對應的key值       a.SHA1值得獲取:  1.在cmd中定位到 .android     2.輸入keytool

iOS地圖定位.自定義標註.搜尋.分類展示(排版)

一.先前準備 4.0 .jpg 這就是公司的需求,上面欄目點選重新整理地圖標註,類目二根據類目一的變化而變化,標註可點選進個人資料,點選下單也可跳轉. 1.0.png 1.2).在用到的vc匯入,還有遵循協議<MAMapViewDelegate>,這裡還要謝謝簡書一位仁兄,因為最後兩個

Android定位開發之百度定位定位、騰訊定位,三足鼎立一起為我所用!

這幾天的專案不是很緊,於是想為未來可能要做的專案做一些技術儲備。 下一個專案很有可能是定位開發,需要用到手機定位功能,於是查了查現在比較流行的第三方定位,最火的基本上就是百度定位>高德定位>騰訊定位了。 想了想不如做一個DEMO把三種定位方式混合一下試試。 Ba

IOS地圖使用說明

關於高德地圖 1目的 為了更方便的使用,以及避免犯錯 2 整合步驟 2.1 申請金鑰 2.2 配置環境(重點) 高德地圖提供了兩種配置方式: 一、 手動配置 即手動匯入所需要的庫檔案,以及進行相關的配置操作。手動配置相對

Android 定位展示當前位置在地圖上

第一步:加許可權 <!--允許程式開啟網路套接字--> <uses-permission android:name="android.permission.INTERNET" /> <!--允許程式設定內建sd卡的寫許可權--> <

定位+poi搜尋

package com.amap.map2d.demo.location; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.util.Log; impo

iOS 地圖設定中心點,獲取中心點的詳細位置和經緯度

先在下面附上逆地理成功之後的圖片 下面附上具體的幾步程式碼實現: 1.通過傳入的經緯度進行逆地理編碼,進行逆地理編碼初始化,然後發起逆地理編碼搜尋。(self.search 這個是定義的 AMapSearchAPI 的物件) - (void)setGegeo:(CLL

IOS 地圖導航

引言 高德地圖導航包還是淺顯易懂,筆者在這裡做點總結,實際操作一遍。 導航分為模擬導航和實時導航兩種,兩種導航都包括語音提示、停止導航、暫停或繼續導航功能。通過模擬導航,使用者可預先了解出行路線,直觀掌握沿途每一個特別路口的交通狀況,讓出行更從容。 算路成

iOS地圖 初始化 重定義比例尺

使用的為高德地圖 遷移到自己專案中也根據官方文件來引入高德地圖 但是2D地圖的API中沒有直接設定地圖比例尺的大小,而預設的MAMapView的建立所展示的5個點的位置由於地圖比例尺的不合適,會產生重疊,怎樣來調整初始化時候地圖比例尺的問題 API中有寫道  REGION

ios地圖流程

       寫個高德地圖的用法,我會了,自然會告訴你們。我不會,你們要是會,也發個部落格,讓我們百度一下,我在網上搜了一堆關於高德地圖的,全都不詳細,我就按我的理解寫一篇,如果能按照我的看明白,希望

ios地圖,地理編碼,基於swift 4.0

最近在做專案中,需要用到高德地圖的,地理編碼的功能。但是搜了一下部落格,都是反地理的編碼的文章。而高德的文件,都藏的比較深。下面就直接寫程式碼了。 import UIKit class AmpSea

iOS 地圖反向地理編碼 onReGeocodeSearchDone 不回撥

//實現逆地理編碼的回撥函式 - (void)onReGeocodeSearchDone:(AMapReGeocodeSearchRequest *)request response:(AMapReGeocodeSearchResponse *)response

android ------ 實現定位並獲取相應資訊 ( 最新版SDK 和 Android SDK版本)

Android開發專案時常常會遇到定位這個功能, 很久以前寫過一篇了,官方也更新了一些東西,我也更新下 以前使用的是jar包 匯

iOS地圖WMS服務&Mapbox地圖WMS服務

網路地圖服務(WMS)      網路地圖服務(WMS)利用具有地理空間位置資訊的資料製作地圖。其中將地圖定義為地理資料可視的表現。能夠根據使用者的請求返回相應的地圖(包括PNG,GIF,JPEG等柵格形式或者是SVG和WEB CGM等向量形式)。WMS支援網路協議HTTP,所支

iOS unity 互相呼叫載入地圖時

需要增加   mapView。delegate = self   這是一種設計模式,有的人稱為代理,有的人稱為委託,比如有A,B兩個控制器,由A可以push到B,B可以pop回A,現在有一種情況,A中有一個label,需要從B中獲取資料,顯示到A的label裡,這時就可以用代理了,在B中寫一個

iOS定位服務與地圖應用開發:地圖開發

2014-07-09 之前工作在一家智慧裝置的公司,做過一個親友定位監控系統,類似現在比較流行的360兒童手環。所以這裡簡單介紹定位與地圖。 1 定位服務 iOS裝置提供三種不同定位途徑,蜂窩式行動電話基站定位;WiFi定位,通過查詢一個WiFi路由器的地理位置資訊,比較省電;GPS

iOS地圖MAMapKit的使用:地圖顯示、新增大頭針、導航、定位功能介紹

4、 引入高德地圖依賴系統庫檔案: 說明: 1.備註中,2D表示使用2D柵格地圖需要的系統檔案,3D表示使用3D向量地圖需要的系統檔案、Search表示使用搜索庫需要的系統檔案,3D(V3.X.X)表示3D向量地圖V3.0.0以後版本需要新增的庫。 2.SystemConfiguration.f