1. 程式人生 > >百度地圖實現普通地圖、定位、周邊搜尋功能

百度地圖實現普通地圖、定位、周邊搜尋功能

//--------------一下是普通地圖的實現-----------------------------------

1:開啟百度地圖APi進去,如果沒有註冊過的需要註冊,註冊過的登入進入

2:點選開發——Android地圖SDk——點選獲取金鑰——點選建立應用——然後你就建立一個新的專案
3:開啟你專案下的res——values——string.xml把專案名:比如BaiDuMap複製到應用名稱中去
4:應用型別選擇:Android SDK
5:釋出版SHA1 的獲取:開啟你電腦的c盤——使用者——你的使用者名稱——.android 下面有一個debug.keystore  
   點選鍵盤Windows+R 進入黑視窗 輸入  keytool -list -v -keystore 把keytool -list -v -keystore拖進去(注意:-keystore後面要有一個空格)點選鍵盤的回車鍵(如果你是輸入進去,黑視窗報錯keytool如下)

這樣的話你需要把環境變數設定一下

不要按照網上那些帖子配置需要這樣全部設定到path裡面


6:輸入金鑰庫口令:android (注意都是英文小寫)回車鍵
7:把下面顯示的證書指紋中的:SHA1複製到 釋出版SHA1
8:開啟你專案的清單檔案 把包名複製到 包名 
9:點選下面的提交
10:就生成了一個Key
11:點選開發指南下的相關下載,下載相關的demo
12:把demo中libs下的除了android-support-v4  全部複製到你的工程的libs下
 點選Android Studio工具欄中的有多個小方塊的那個圖示
 點選APP再點選Dependencies ——點選加號 ——選擇File dependency
把libs下的jar包都新增進去



13:進入百度地圖Api的Android定位Sdk 中開發指南中的配置環境 找到
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
}
複製到 工程下的build.gradle中
如:buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

點選右上角的Sync Now 同步一下

14:進入開發指南中的 Hello BaiduMap中 (注意:key值就是剛才我們申請的那個)

 (1)在application中新增開發金鑰
<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="開發者 key" />  
</application>
2)新增所需許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
第三步,在佈局xml檔案中新增地圖控制元件;
<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />

第四步,在應用程式建立時初始化 SDK引用的Context 全域性變數:
public class MainActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各元件之前初始化context資訊,傳入ApplicationContext  
        //注意該方法要再setContentView方法之前實現  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
    }  
}
注意:在SDK各功能元件使用之前都需要呼叫
SDKInitializer.initialize(getApplicationContext());,因此我們建議該方法放在Application的初始化方法中


第四步我是這麼做的

:新建一個application包,在這個包下新建立一個BaseApplication類並繼承Application,實現onCreate的方法
在onCreate中複製 SDKInitializer.initialize(getApplicationContext());進去
如下:

public class BaseApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        SDKInitializer.initialize(getApplicationContext());
    }
}


然後在清單檔案中配置:<application下:
<application
        android:name=".application.BaseApplication
"//包名


第五步,建立地圖Activity,管理地圖生命週期;
public class MainActivity extends Activity {  
    MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各元件之前初始化context資訊,傳入ApplicationContext  
        //注意該方法要再setContentView方法之前實現  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
        //獲取地圖控制元件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        //在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命週期管理  
        mMapView.onDestroy();  
    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理  
        mMapView.onResume();  
        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理  
        mMapView.onPause();  
        }  
    }
完成以上步驟後,執行程式,即可在您的應用中顯示

//-------------------以上是普通地圖的實現---------------------------------------------------------

//===============以下是定位功能的實現==========================

一:
1:配置環境 進入Android定位SDK的開發指南中點選配置環境
 
使用AndroidStutio的開發者除了上述操作外,還需要在build.gradle中配置SO檔案的使用,如下所示:
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
}

2:
設定AndroidManifest.xml

在Application標籤中宣告SERVICE元件,每個APP擁有自己單獨的定位SERVICE
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>

  3:宣告使用許可權
<!-- 這個許可權用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個許可權用於訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用於訪問wifi網路資訊,wifi資訊會用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運營商資訊,用於支援提供運營商資訊相關的介面-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個許可權用於獲取wifi的獲取許可權,wifi資訊會用來進行網路定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用於讀取手機當前的狀態-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 寫入擴充套件儲存,向擴充套件卡寫入資料,用於寫入離線定位資料-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問網路,網路定位需要上網-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取許可權,使用者寫入離線定位資料-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

4:
設定AcessKey

Android定位SDK4.2及之後版本需要在Mainfest.xml正確設定Accesskey(AK),如果設定錯誤將會導致定位和地理圍欄服務無法正常使用。
設定AK,在Application標籤中加入
<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="AK" />       //key:開發者申請的Key

//-------------------Activity2-------------------複製一下程式碼即可-------------程式碼來源下載的Demo中src下的baidumapsdk下的demo下的map下的LocationDemo------------------------

package com.example.baidumap.activity;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.example.baidumap.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class Activity2 extends Activity{
    MapView mMapView = null;  
    // 定位相關
    LocationClient mLocClient;
    public MyLocationListenner myListener = new MyLocationListenner();
    BaiduMap mBaiduMap;
    boolean isFirstLoc = true; // 是否首次定位
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄 
        setContentView(R.layout.activity_main);
        //獲取地圖控制元件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
        
        
        mBaiduMap = mMapView.getMap();
        // 開啟定點陣圖層
        mBaiduMap.setMyLocationEnabled(true);
        // 定位初始化
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 開啟gps
        option.setCoorType("bd09ll"); // 設定座標型別
        option.setScanSpan(1000);
        mLocClient.setLocOption(option);
        mLocClient.start();
        
    }

      /**
     * 定位SDK監聽函式
     */
    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // map view 銷燬後不在處理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                            // 此處設定開發者獲取到的方向資訊,順時針0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
            if (isFirstLoc) {
                isFirstLoc = false;
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }

        public void onReceivePoi(BDLocation poiLocation) {
        }
    }
    
    
      @Override  
        protected void onDestroy() {  
            super.onDestroy();  
            // 退出時銷燬定位
            mLocClient.stop();
            // 關閉定點陣圖層
            mBaiduMap.setMyLocationEnabled(false);
            mMapView.onDestroy();
            mMapView = null;
        }  
        @Override  
        protected void onResume() {  
            super.onResume();  
            //在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理  
            mMapView.onResume();  
            }  
        @Override  
        protected void onPause() {  
            super.onPause();  
            //在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理  
            mMapView.onPause();  
            }  

}

 //--------------以上是定位--------------------------------

//================以下是周邊搜尋功能===========================

注意:實現此功能時,匯入了兩個類檔案,分別是src下的com下的baidu下的mapapi下的overlayutil下的 OverlayManager 和 PoiOverlay

//---------------------Activity3中           完成以下就可做一個簡單的周邊搜尋了--------------------------------------------------

package com.example.baidumap.activity;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.CircleOptions;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiBoundSearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiDetailSearchOption;
import com.baidu.mapapi.search.poi.PoiIndoorResult;
import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
import com.baidu.mapapi.search.poi.PoiSortType;
import com.example.baidumap.R;
import com.example.baidumap.activity.Activity2.MyLocationListenner;
import com.example.baidumap.utils.PoiOverlay;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Activity3 extends Activity implements OnGetPoiSearchResultListener{
    MapView mMapView = null;  
    // 定位相關
    LocationClient mLocClient;
    public MyLocationListenner myListener = new MyLocationListenner();
    BaiduMap mBaiduMap;
    boolean isFirstLoc = true; // 是否首次定位
    private EditText et_text;
    private Button bt_button;
    
     private PoiSearch mPoiSearch = null;
     LatLng center = null;
     int radius = 50000;
     
     
//-----------------onCreate-------------------------
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄 
        setContentView(R.layout.activity_main);
        //找到控制元件
        et_text = (EditText) findViewById(R.id.et_text);
        bt_button = (Button) findViewById(R.id.bt_nutton);
        //獲取地圖控制元件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
        
        
        mBaiduMap = mMapView.getMap();
        // 開啟定點陣圖層
        mBaiduMap.setMyLocationEnabled(true);
        // 定位初始化
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 開啟gps
        option.setCoorType("bd09ll"); // 設定座標型別
        option.setScanSpan(1000);
        mLocClient.setLocOption(option);
        mLocClient.start();
       
        
        // 初始化搜尋模組,註冊搜尋事件監聽
        mPoiSearch = PoiSearch.newInstance();
        mPoiSearch.setOnGetPoiSearchResultListener(this);
        
        //點選搜尋
        bt_button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //關閉輸入框
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                 PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption().keyword(et_text.getText()
                            .toString()).sortType(PoiSortType.distance_from_near_to_far).location(center)
                            .radius(radius).pageNum(10);//顯示資料個數
                    mPoiSearch.searchNearby(nearbySearchOption);
                
            }
        });
        
    }

      /**
     * 定位SDK監聽函式
     */
    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // map view 銷燬後不在處理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            
            center=new LatLng(location.getLatitude(), location.getLongitude());
            
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                            // 此處設定開發者獲取到的方向資訊,順時針0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
            if (isFirstLoc) {
                isFirstLoc = false;
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }

        public void onReceivePoi(BDLocation poiLocation) {
        }
    }
    
    
      @Override  
        protected void onDestroy() {  
            super.onDestroy();  
            // 退出時銷燬定位
            mLocClient.stop();
            // 關閉定點陣圖層
            mBaiduMap.setMyLocationEnabled(false);
            mMapView.onDestroy();
            mMapView = null;
        }  
        @Override  
        protected void onResume() {  
            super.onResume();  
            //在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理  
            mMapView.onResume();  
         }  
        
        @Override  
        protected void onPause() {  
            super.onPause();  
            //在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理  
            mMapView.onPause();  
            
         }
        
        
        
        /**
         * 獲取POI詳情搜尋結果,得到searchPoiDetail返回的搜尋結果
         * @param result
         */
        @Override
        public void onGetPoiDetailResult(PoiDetailResult arg0) {
             if (arg0.error != SearchResult.ERRORNO.NO_ERROR) {
                    Toast.makeText(Activity3.this, "抱歉,未找到結果", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(Activity3.this, arg0.getName() + ": " + arg0.getAddress(), Toast.LENGTH_SHORT).show();
                            
                }            
        }
        
        @Override
        public void onGetPoiIndoorResult(PoiIndoorResult arg0) {
            
            
        }
        
        /**
         * 獲取POI搜尋結果,包括searchInCity,searchNearby,searchInBound返回的搜尋結果
         * @param result
         */
        @Override
        public void onGetPoiResult(PoiResult arg0) {
             if (arg0 == null || arg0.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
                    Toast.makeText(Activity3.this, "未找到結果", Toast.LENGTH_LONG)
                            .show();
                    return;
                }
                if (arg0.error == SearchResult.ERRORNO.NO_ERROR) {
                    mBaiduMap.clear();
                    PoiOverlay overlay = new MyPoiOverlay(mBaiduMap);
                    mBaiduMap.setOnMarkerClickListener(overlay);
                    overlay.setData(arg0);
                    overlay.addToMap();
                    overlay.zoomToSpan();
                    
                    showNearbyArea(center, radius);
                        
                  
                    return;
                }
            
        } 
        
        
         private class MyPoiOverlay extends PoiOverlay {

                public MyPoiOverlay(BaiduMap baiduMap) {
                    super(baiduMap);
                }

                @Override
                public boolean onPoiClick(int index) {
                    super.onPoiClick(index);
                    PoiInfo poi = getPoiResult().getAllPoi().get(index);
                    // if (poi.hasCaterDetails) {
                    mPoiSearch.searchPoiDetail((new PoiDetailSearchOption())
                            .poiUid(poi.uid));
                    // }
                    return true;
                }
            }
         
         /**
             * 對周邊檢索的範圍進行繪製
             * @param center
             * @param radius
             */
            public void showNearbyArea( LatLng center, int radius) {
                //設定中心點
               /* BitmapDescriptor centerBitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);
                MarkerOptions ooMarker = new MarkerOptions().position(center).icon(centerBitmap);
                mBaiduMap.addOverlay(ooMarker);*/

                //顯示圖層
               /* OverlayOptions ooCircle = new CircleOptions().fillColor( 0xCCCCCC00 ).center(center).stroke(new Stroke(5, 0xFFFF00FF )).radius(radius);
                mBaiduMap.addOverlay(ooCircle);*/
            }


}

//===========以上是周邊搜尋功能==================

//----------------以下是周邊搜尋的佈局檔案--------------------------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout android:layout_width="fill_parent"        
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <EditText android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/et_text"
            android:hint="請輸入搜尋內容"/>
        <Button android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:text="周邊搜尋"
            android:id="@+id/bt_nutton"/>
        
    </LinearLayout>

    <com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />

</LinearLayout>

////****************注意Android6.0以增加了許可權有些許可權需要新增一下程式碼進行新增許可權**********************/////

/*不新增許可權會導致定位不準確*/

if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED
        ||ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){//申請WRITE_EXTERNAL_STORAGE許可權ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION}, 
            ACCESS_COARSE_LOCATION_REQUEST_CODE);}else{
    initMap(sss);
sss是整合百度地圖放到了initMap();方法裡面了,上邊有具體的方法!@
}

相關推薦

地圖實現普通地圖定位周邊搜尋功能

//--------------一下是普通地圖的實現----------------------------------- 1:開啟百度地圖APi進去,如果沒有註冊過的需要註冊,註冊過的登入進入 2:點選開發——Android地圖SDk——點選獲取金鑰——點選建立應用——

Android整合地圖-----顯示地圖定位長按顯示地址資訊

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

地圖相關開發:顯示定位描點自定義大頭針

一、環境配置 二、地圖顯示與定位 三、根據經緯度描點 四、大頭針與氣泡 五、給大頭針加tag值 六、問題處理 一、環境配置 1. 註冊和獲取金鑰: 2、下載.百度地圖framework包: 3、環

地圖實現拖動獲取定位實現地位

如果需要實現定位,則需要獲取的是ak,這是實現定位的前提, 像這樣的就是獲取到了ak,也就是一個專案中使用的是一個ak。 申請ak: ==>定位點動畫效果  marker.setAnima

&高德地圖小區景點邊界輪廓實現

經常的我們在使用地圖功能時,會發現在選擇一個小區或者一個熱門景點的時候,地圖上面會給出其邊界輪廓,能夠方便我們知道其範圍大小,有時候在我們使用地圖元件的時候,也會面臨著類似的需求。比如在地圖上面標識出一個商場範圍內的熱力圖,一個熱門景點的遊覽情況等。那麼,我們該如何利用地圖

使用API實現實時公交站點查詢及地圖顯示

需求:當外部輸入公交站點名稱,點選查詢按鈕的時候,會在div上顯示所有包含此公交站點的公交線路號的列表,點選列表中的項,會在百度地圖上繪製出其線路。 實現: 第一步:生成經過此公交站點的所有線路列表 使用的百度API:服務類中LocalSearch類,用於進行位置搜尋、周

微信公眾號開發《三》微信JS-SDK之地理位置的獲取,整合地圖實現線上地圖搜尋

本次講解微信開發第三篇:獲取使用者地址位置資訊,是非常常用的功能,特別是服務行業公眾號,尤為需要該功能,本次講解的就是如何呼叫微信JS-SDK介面,獲取使用者位置資訊,並結合百度地鐵,實現線上地圖搜尋,與線上導航。 在這貼上上二篇博文連結,方便大家訪問: 1.何為J

使用API實現實時公交線路查詢及地圖顯示

需求:當外部輸入公交線路號,點選查詢按鈕的時候,會在div上顯示所有包含此公交線路號的列表,點選列表中的項,會在百度地圖上繪製出其線路。 實現: 第一步:生成線路列表 使用的百度API:服務類中BusLineSearch類是公交線路搜尋類。 構造其物件,呼叫其getBus

iOS應用內跳轉高德蘋果地圖

bool 知識點 coo count value oid bsp lse rec 移動開發經常用到基於位置的一些導航功能,但是對於對導航功能依賴性不強的的應用,我們直接采用應用外跳轉地圖APP即可。 但是應用間跳轉,首先需要設置白名單, 在iOS 9 下涉及到平臺客戶端跳

使用SDK實現定位功能

今天由於專案功能需求,使用了這個SDK。現簡單總結一下製作了一個小的Demo 首先,竟然要使用百度的APL自然需要去滿足它的條件,步驟如下: 1、下載百度地圖的SDK        下載地址:百度地圖SDK下載 2、申請key值   

04 在地圖上新增主頁定位鷹眼圖和比例尺控制元件

在上一篇文章中我們學習瞭如何建立一個簡單的地圖,那接下來,我們學習如何給建立好的地圖上新增一些基本的空間,最終效果如下圖所示: 由上圖可以看出,我們在地圖上添加了主頁、定位、鷹眼圖以及比例尺控制元件,下面將詳細介紹如何新增: 1 主頁按鈕的新增 新增主頁按鈕的前提是

基於python+opencv+pyqt5+AI實現的人臉識別語音播報語音合成模擬簽到系統(1)

人臉識別效果圖 簡單介紹 使用python3+寫的,使用face_recognition(python開源的人臉識別庫)進行人臉識別 ,使用opencv2進行開啟顯示攝像頭圖片等,使用pyqt5是ui介面,使用百度AI中的百度語音合成實現語音播報和語音合成,

ionic1 接入或者高德地圖 移動端不顯示 pc端谷歌瀏覽器正常的問題解決

這個問題困擾了我三天!!! 火大!!!!!! 百度別人,什麼api換成getscript,加scroll='false'...  各種操作,毛用沒有。 看程式碼沒有任何問題,該引入的都引了,js部分try catch 下  移動端報錯 AMap(BMap) is not de

與谷歌地圖瓦片組織方式對比

百度是從中心點經緯度(0,0)度開始計算瓦片,在第1級時百度將世界地圖分為4塊。 中心點右上部分(中國地區)佔1塊。 谷歌是從左上角經緯度(-180,90)度開始計算瓦片,在第1級時谷歌將世界地圖分為1塊。 在第2級時,百度地圖(中心點右上部分)分為

Android仿,高德地圖位置交換控制元件,水平or垂直交換控制元件位置

  開始看到這個需求,準備使用檢視動畫 TranslateAnimation 來實現。但是把因為檢視動畫只是移動了檢視,控制元件的位置沒有改變,導致只能執行一次交換的動作,不能交換回來。逐放棄改用屬性動畫來實現。直接交換兩個控制元件的位置,交換後在將原來控制元件的值賦予交換後

城市選擇定位搜尋及右側字母導航,類似美團 糯米 餓了麼等 APP 選擇城市功能

CityPicker 專案地址:zaaach/CityPicker  簡介:城市選擇、定位、搜尋及右側字母導航,類似美團 百度糯米 餓了麼等 APP 選擇城市功能 更多:作者   提 Bug    標籤: &n

解決ueditor插入動態地圖空白 支援iframe方法

說明:新版本ueditor要修改 xss過濾白名單  修改配置檔案ueditor.config.js  搜尋:  whitList 增加下面第二行即可 1 2 3 ,whitList:{ iframe: ['frameborder','border','margin

谷歌離線地圖解決方案(離線地圖下載)

離線地圖解決方案,除了買地圖資料,使用專業的ArcGIS來做外,也可以使用GMap.Net來做。 使用了GMap一年了,也有了一些積累,開發了一個可以下載ArcGIS、百度、谷歌、高德、騰訊SOSO、天地圖、Here等地圖的地圖下載器。 百度和google地圖載入顯示如下: 百度普通地圖: 百

基於實現微信服務號內文字語音互轉STT TTS

.com wid ech 設置 errcode creat ice 遍歷 組裝 先上效果圖: 使用百度語音識別和語音合成兩個接口實現 1.語音識別STT 用戶微信輸入,調用百度api,得到識別文本。 2.語音合成TTS 用戶輸入問題,調用百度api,得到mps音頻,使用開

python,使用api實現復制截圖中的文字

content nsh AD con 讀取 __name__ return IT now() 百度雲文字識別技術文檔: https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html#.E6.96.B0.E5.BB.BAAipOcr