1. 程式人生 > >swift地圖定位(二十)百度地圖的使用(POI)

swift地圖定位(二十)百度地圖的使用(POI)

//
//  ViewController.swift
//  baidumapfirsttest
//
//  Created by targetcloud on 2016/11/16.
//  Copyright © 2016年 targetcloud. All rights reserved.
import UIKit

class ViewController: UIViewController {

    var _mapView: BMKMapView?
    
    lazy var searcher: BMKPoiSearch = {
        let searcher = BMKPoiSearch()
        searcher.delegate = self
        return searcher
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        _mapView = BMKMapView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
        self.view.addSubview(_mapView!)
        //設定起始中心點
        let center = CLLocationCoordinate2D(latitude: 31.272881101147327, longitude: 121.61539365113157)
        _mapView?.centerCoordinate = center
        //設定區域
        let span = BMKCoordinateSpanMake(0.011929035022411938, 0.0078062748817018246)
        let region = BMKCoordinateRegionMake(center, span)
        _mapView?.setRegion(region, animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        _mapView?.viewWillAppear()
        searcher.delegate = self
        _mapView?.delegate = self // 此處記得不用的時候需要置nil,否則影響記憶體的釋放
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        _mapView?.viewWillDisappear()
        searcher.delegate = nil
        _mapView?.delegate = nil // 不用時,置nil
    }
}

extension ViewController: BMKMapViewDelegate {
    func mapview(_ mapView: BMKMapView!, onLongClick coordinate: CLLocationCoordinate2D) {
        print(coordinate);//CLLocationCoordinate2D(latitude: 31.273070191233703, longitude: 121.61624006488663)
        // 調整區域 根據長按的位置
        let span = BMKCoordinateSpanMake(0.011929035022411938, 0.0078062748817018246)
        let region = BMKCoordinateRegionMake(coordinate, span)
        mapView.setRegion(region, animated: true)
        
        let option = BMKNearbySearchOption()
        option.pageIndex = 0
        option.pageCapacity = 20
        option.location = coordinate//根據長按的位置
        option.keyword = "小吃"
        let flag = searcher.poiSearchNear(by: option)
        if flag{
            print("周邊檢索傳送成功")
        }else{
            print("周邊檢索傳送失敗")
        }
    }
    
    //點選大頭針
    func mapView(_ mapView: BMKMapView!, annotationViewForBubble view: BMKAnnotationView!) {
        let annotaiton = view.annotation
        print(">>>\(annotaiton?.coordinate)\(annotaiton?.title!())\(annotaiton?.subtitle!())")//>>>Optional(__C.CLLocationCoordinate2D(latitude: 31.273627860569221, longitude: 121.61636597701556))Optional("美滋滋零食")Optional("上海市浦東新區")
    }
    
    //區域改變
    func mapView(_ mapView: BMKMapView!, regionDidChangeAnimated animated: Bool) {
        print(mapView.region.center,mapView.region.span)//CLLocationCoordinate2D(latitude: 31.272873385065104, longitude: 121.61537568502136) BMKCoordinateSpan(latitudeDelta: 0.011921347023825746, longitudeDelta: 0.0078062748817018246)
    }
}

extension ViewController: BMKPoiSearchDelegate {
    func onGetPoiResult(_ searcher: BMKPoiSearch!, result poiResult: BMKPoiResult!, errorCode: BMKSearchErrorCode) {
        if errorCode == BMK_SEARCH_NO_ERROR {
            print("周邊檢索成功")
            print(poiResult.poiInfoList)
            let poiInfos = poiResult.poiInfoList as! [BMKPoiInfo]
            for poiInfo in poiInfos {
                print(poiInfo.name, poiInfo.address)
                //加大頭針
                let annotation = BMKPointAnnotation()
                annotation.coordinate = poiInfo.pt//CLLocationCoordinate2D
                annotation.title = poiInfo.name
                annotation.subtitle = poiInfo.address
                _mapView?.addAnnotation(annotation)
            }
        }else {
            print("周邊檢索失敗")
        }
    }
}
/*
 周邊檢索傳送成功
 周邊檢索成功
 [<BMKPoiInfo: 0x6000002b0e60>, <BMKPoiInfo: 0x6000002af3c0>, <BMKPoiInfo: 0x6000002b0200>, <BMKPoiInfo: 0x6000002b0e00>, <BMKPoiInfo: 0x6000002b1ee0>, <BMKPoiInfo: 0x6000002af300>, <BMKPoiInfo: 0x6000002a6d20>, <BMKPoiInfo: 0x6000002af060>, <BMKPoiInfo: 0x6000002b01a0>, <BMKPoiInfo: 0x6000002b1f40>, <BMKPoiInfo: 0x6000002b0da0>, <BMKPoiInfo: 0x6000002b3920>, <BMKPoiInfo: 0x6000002b0f20>, <BMKPoiInfo: 0x6000002a6e40>, <BMKPoiInfo: 0x6000002b3260>, <BMKPoiInfo: 0x6000002bd400>, <BMKPoiInfo: 0x6000002b3500>, <BMKPoiInfo: 0x6000002b3320>, <BMKPoiInfo: 0x6000002b3380>, <BMKPoiInfo: 0x6000002b3980>]
 絕味鴨脖(佳林路二店) 佳林路161號底層
 2016-11-16 17:11:35.399825 baidumapfirsttest[6234:238428] [Graphics] UIColor created with component values far outside the expected range. Set a breakpoint on UIColorBreakForOutOfRangeColorComponents to debug. This message will only be logged once.
 林家麵館 佳林路147號(近金高路)
 上海面館 金高路2072號(東陸路口)
 和府私房牛肉麵 佳林路88號
 渝客麻辣燙(金高路店) 金高路1736號(廊亦舫對面)
 東北味小吃 佳林路125號
 百年龍袍蟹黃湯包(金橋店) 金高路1757號金橋佳鄰坊1F
 巴比饅頭(東陸路) 浦東新區東陸公路與金高路交叉口旁
 李記紅燒牛肉麵麻辣燙 金高路2066號
 正宗潮汕砂鍋粥 金高路1897號
 金橋匯 金高路1777號金橋文體中心4樓
 來伊份(NO.3521店) 東陸公路1980號
 沙縣小吃 金高路1788號
 精品黃燜雞米飯 金高路2068號(東陸路)
 蒸味坊饅頭 上海市浦東新區金高路1764號
 重慶雞公煲巫山烤全魚 佳林路137號
 銀記桂林米粉 上海市浦東新區
 塞北風 金高路2088號
 美滋滋零食 上海市浦東新區
 沙縣小吃 上海市浦東新區
 */

相關推薦

swift地圖定位地圖的使用POI

// // ViewController.swift // baidumapfirsttest // // Created by targetcloud on 2016/11/16. // Copyright © 2016年 targetcloud. All rig

Android studio3.0對於地圖api開發2——地圖定位指定地點以及地圖型別的變換

      承接上一篇文章寫的,https://blog.csdn.net/qq_41562408/article/details/82794772已經實現了百度地圖的工具準備以及基本的地圖顯示,不過就一個地圖應用來說,只是單純的顯示一種地圖型別以及只是能夠定位到天安門其他地

Android studio3.0對於地圖api開發3——地圖定位當前地點以及地圖覆蓋物簡介

   承接上文,上文已經實現了按照緯經度進行地點的定位以及不同地圖型別的切換,https://blog.csdn.net/qq_41562408/article/details/82802082但是就我們普通使用者的需求來說,這遠遠不夠。使用者更希望能夠直接顯示自己的當前位置

【php增刪改查實例】第二節 - 引入地圖

while AC nsh cat java ID amp 當我 src 20.用戶新增地址字段 在實際的開發中,經常會出現對數據表新增或者修改字段的事情,所以,當用戶提出加字段的需求時,我們的頁面以及後臺程序都要進行相應的改動。 本節就以增加一個地址字段為例。 打開navi

Android studio3.0對於地圖api開發4——地圖地圖覆蓋物製作

       承接上文未完的繼續介紹,上文內容:https://blog.csdn.net/qq_41562408/article/details/82810484主要實現百度地圖的定位以及對於地圖覆蓋物進行簡單介紹,這篇文章便是對於地圖覆蓋物進行,經過閱讀開發文件,我們會發

Android studio3.0對於地圖api開發6——地圖地圖POI檢索

LatLngBounds bounds=new LatLngBounds.Builder().include(new LatLng(40.048459,116.302072)) .include(new LatLng(40.050675,116.30431

Android studio3.0對於地圖api開發7——地圖地圖導航實現

       承接上文https://blog.csdn.net/qq_41562408/article/details/82829938,本次我們來實現百度地圖的導航功能實現。百度地圖的導航功能對於地點的確定我感覺主要是通過緯經度確定地點然後進行導航,其導航模式可分為:步行

Android studio3.0對於地圖api開發8——地圖開發思考

       隨著對於百度地圖SDK的不斷深入,對於百度地圖的基本操作以及實現,每一塊功能就像是一個個工具,他們功能不同,又能相互組合,這就為我們開發者提供了一個很好的平臺,在這個平臺,開發人員可以進行根據自己的需求進行組裝。為了更好的交流,相互學了,我也賺點積分吧!O(∩_

從零開始之驅動發開、linux驅動九、linux中的程序

一、程序 1、什麼是程序 程序的概念是作業系統中最基本、最重要的概念。它是多道程式系統出現後,為了刻畫系統內部出現的動態情況,描述系統內部各道程式的活動規律而引進的一個新概念,所有多道程式設計的作業系統都建立在程序的基礎上。作業系統專門引入程序的概念,從理論角度看,是對正

前端框架Vue9——地圖使用

  百度地圖JavaScript API是一套由JavaScript語言編寫的應用程式介面,可幫助您在網站中構建功能豐富、互動性強的地圖應用,支援PC端和移動端基於瀏覽器的地圖應用開發,且支援HTML5特性的地圖開發。   該套API免費對外開放。自v1.5版

跨域請求使用jsonp實現跨域請求地圖api證逆地址解析獲取周邊資訊pois

新手程式設計師,新手部落格,如果那裡寫的不好,還請大神們補充,指錯 最近專案裡面需要做一個電子圍欄的功能,我這邊做的就是需要把商戶的地址的經緯度存進資料庫,本來這些從百度地圖API裡面有Demo可以看,但是我是訪問的百度地圖的可以獲取經緯度以及根據經緯度進行周邊檢索的地址

Android仿微信呼叫第三方地圖應用導航高德、、騰訊

好久沒有寫Andorid程式碼啦!最近剛好要實現一個這個功能,順便就在部落格裡分享一下。 實現目標 先來一張微信功能截圖看看要做什麼 其實就是有一個目的地,點選目的地的時候彈出可選擇的應用進行導航。 大腦動一下,要實現這個功能應該大體分成兩步:

python3 學習2分頁翻看搜索結果

# -*- coding: utf-8 -*- from selenium import webdriver import time if __name__ == "__main__":     driver = webdriver.Chrome()    

獨家分享| 2019年校招大廠演算法自己經歷和好友經驗大疆,,騰訊……

本篇內容來自【計算機視覺聯盟】公眾號!更多精彩內容搜尋【計算機視覺聯盟】關注獲取 今天這個小夥伴拿了30萬+的薪酬,明天那個好基友拿了50萬+的薪酬……聽到這些你是不是也很激動,夢想著某一天自己也能拿到這樣令人嚮往的薪酬。想拿到offer,實力是首要,同時也要了解各大廠的面試要求及流程,清楚各大

次開發——地圖

<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scal

根據GPS定位得到的經緯度呼叫地圖API在地圖上標註

可以實現單個點或多個點的標註,首先先看得到的效果圖: 方法:     首先要註冊百度地圖開發者賬號,然後建立應用得到屬於自己的ak金鑰。      具體步驟不祥細介紹了。      主要是利用百度地圖給出的demo進行修改: 程式碼如下: <!DOC

地圖切圖工具下載和地圖切圖工具使用方法

百度地圖切圖很麻煩,雖然百度地圖提供了api,百度地圖API當前預設支援兩種地圖型別《map type》:普通圖和三維圖,如果您想自定義地圖,那麼這個時候就必須切圖了。。。下今天小編給大家分享一下本篇文章《百度地圖切圖工具下載和及百度地圖切圖工具用法》! 我們先從切圖工具的使用開始,接著再分析該

高德地圖API獲取的經緯度轉為地圖經緯度顯示

通過高德地圖API獲取的經緯度顯示在百度地圖上會有位置的偏差,原因是百度地圖對經緯度進行了加密,通過以下方法對經緯度進行轉換可在百度地圖上精準顯示 private double[] gaoDeToBaidu(double gd_lon, double gd_lat) { double[]

地圖使用之-----vue專案中地圖的應用以及遇到的一些問題

我們在專案開發時對於地圖應用也是比較常見的,因為百度地圖的開發文件都是基於HTML檔案的,並沒有介紹在Vue專案中的應用,而且網上關於在vue中的應用也比較少,官網的文件還是很容易看的懂,但是應用到vue中還是會遇到很多問題的,下面我就分享一些我在vue專案使用百度地圖的體會

swift地圖定位整合地圖

ViewController.swift // // ViewController.swift // baidumapfirsttest // // Created by targetcloud on 2016/11/16. // Copyright © 2016年