国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

做網(wǎng)站 賺錢嗎推廣費(fèi)用一般多少

做網(wǎng)站 賺錢嗎,推廣費(fèi)用一般多少,谷歌網(wǎng)站為什么打不開,自己做網(wǎng)站需要服務(wù)器一、獲取高德平臺(tái)key 【1】基于application包名&sha1值在高德控制臺(tái)獲取key值&#xff0c;詳情參考&#xff1a; 獲取Key-創(chuàng)建工程-開發(fā)指南-Android 地圖SDK | 高德地圖API 【2】在manifest中聲明權(quán)限 【3】將拿到的key值在manifest中進(jìn)行聲明 <!--允許程序打開網(wǎng)絡(luò)…

一、獲取高德平臺(tái)key

【1】基于application包名&sha1值在高德控制臺(tái)獲取key值,詳情參考:? 獲取Key-創(chuàng)建工程-開發(fā)指南-Android 地圖SDK | 高德地圖API

【2】在manifest中聲明權(quán)限

【3】將拿到的key值在manifest中進(jìn)行聲明

<!--允許程序打開網(wǎng)絡(luò)套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允許程序設(shè)置內(nèi)置sd卡的寫權(quán)限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
<!--允許程序獲取網(wǎng)絡(luò)狀態(tài)-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<!--允許程序訪問(wèn)WiFi網(wǎng)絡(luò)信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<!--允許程序訪問(wèn)CellID或WiFi熱點(diǎn)來(lái)獲取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<meta-dataandroid:name="com.amap.api.v2.apikey"android:value="xxxxxxxxxxxx" />

二、集成依賴

在app build.gradle文件中增加高德地圖依賴

implementation("com.amap.api:3dmap:9.8.2")

三、顯示地圖

概述-Android 地圖SDK | 高德地圖API

在xml文件中聲明MapView控件,并在class中重寫?onCreate 方法(此方法必須重寫),注意生命周期的管理

<com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" />
private var mapView: MapView? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.test_activity)mapView = findViewById(R.id.map)mapView?.onCreate(savedInstanceState)
}override fun onResume() {super.onResume()mapView?.onResume()
}override fun onPause() {super.onPause()mapView?.onPause()
}override fun onDestroy() {super.onDestroy()mapView?.onDestroy()
}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)mapView?.onSaveInstanceState(outState)
}

地圖默認(rèn)中心點(diǎn)為北京天安門

四、高德地圖具體使用

以下對(duì)于地圖的控制使用之前需要拿到AMap對(duì)象

map = mapView?.map

1、切換城市中心點(diǎn)

private fun moveCenterTo(latLng: LatLng) {val cameraUpdate = CameraUpdateFactory.newLatLng(latLng)map?.moveCamera(cameraUpdate)
}

Android高德地圖切換城市中心點(diǎn)展示

2、設(shè)置縮放級(jí)別

moveCamera(CameraUpdateFactory.zoomTo(14.0f))

3、繪制marker

companion object {private val MARKER1 = LatLng(40.02855349893361, 116.3052948784071)private val MARKER2 = LatLng(41.093445392798934, 116.11030767409169)
}val marker1: MarkerOptions = MarkerOptions().apply {position(MARKER1)
}
val marker2: MarkerOptions = MarkerOptions().apply {position(MARKER2)
}val list = ArrayList<MarkerOptions>()
list.add(marker1)
list.add(marker2)
map?.addMarkers(list, false)

如下圖所示,不設(shè)置icon默認(rèn)展示藍(lán)色定位圖標(biāo)。

11

針對(duì)marker可以設(shè)置的屬性:

position在地圖上標(biāo)記位置的經(jīng)緯度值,必填參數(shù)
title點(diǎn)標(biāo)記的標(biāo)題
snippet點(diǎn)標(biāo)記的內(nèi)容
draggable點(diǎn)標(biāo)記是否可拖拽
visible點(diǎn)標(biāo)記是否可見(jiàn)
anchor點(diǎn)標(biāo)記的錨點(diǎn)
alpha點(diǎn)的透明度

public final?java.util.ArrayList<Marker>?addMarkers(java.util.ArrayList<MarkerOptions>?options, boolean?moveToCenter)

在地圖上添一組圖片標(biāo)記(marker)對(duì)象,并設(shè)置是否改變地圖狀態(tài)以至于所有的marker對(duì)象都在當(dāng)前地圖可視區(qū)域范圍內(nèi)顯示。

參數(shù):

options?- 多個(gè)markerOptions對(duì)象,它們分別定義了對(duì)應(yīng)marker的屬性信息。

moveToCenter?- 是否改變地圖狀態(tài),默認(rèn)為false。

返回:

返回一組被添加的marker對(duì)象。

4、繪制折線

val latLngList = ArrayList<LatLng>()
latLngList.add(MARKER1)
latLngList.add(MARKER2)
map?.addPolyline(PolylineOptions().addAll(latLngList).width(3f).color(Color.RED)
)

5、軌跡

SmoothMoveMarker(map).apply {
setDescriptor(BitmapDescriptorFactory.fromResource(R.drawable.smooth))setPoints(latLngList)setTotalDuration(5)startSmoothMove()}

6、兩點(diǎn)之間距離計(jì)算

AMapUtils.calculateLineDistance(latLng1,latLng2)

7、切換地圖圖層

【1】預(yù)設(shè)模式

mapType = AMap.MAP_TYPE_NIGHT

【2】在線自定義模式

val options = CustomMapStyleOptions().apply {isEnable = truestyleId = ""
}
map?.setCustomMapStyle(options)

8、手勢(shì)交互

map?.uiSettings.let {it.isRotateGesturesEnabled = falseit.isZoomControlsEnabled = falseit.isTiltGesturesEnabled = false
}

更多設(shè)置可參考:https://a.amap.com/lbs/static/unzip/Android_Map_Doc/3D/index.html?overview-summary.html

9、地圖狀態(tài)監(jiān)聽(tīng)

            setOnMapLoadedListener(object : AMap.OnMapLoadedListener {override fun onMapLoaded() {Log.e(TAG, "onMapLoaded...")}})//自帶放大縮小接口setOnCameraChangeListener(object : AMap.OnCameraChangeListener {override fun onCameraChange(p0: CameraPosition?) {//Log.e(TAG, "onCameraChange + ${p0?.toString()}")}override fun onCameraChangeFinish(p0: CameraPosition?) {Log.e(TAG, "onCameraChangeFinish + ${p0?.toString()}")}})//map point點(diǎn)擊事件addOnMapClickListener(object : AMap.OnMapClickListener {override fun onMapClick(p0: LatLng?) {Log.e(TAG, "onMapClick + ${p0?.toString()}")}})//地圖自帶poi點(diǎn)擊事件addOnPOIClickListener(object : AMap.OnPOIClickListener {override fun onPOIClick(p0: Poi?) {Log.e(TAG, "onPOIClick + ${p0?.toString()}")}})addOnMarkerClickListener(object : AMap.OnMarkerClickListener {override fun onMarkerClick(p0: Marker?): Boolean {Log.e(TAG, "onMarkerClick + ${p0?.id}")return true}})

10、截圖功能

拿到bitmap對(duì)象進(jìn)行處理

map?.getMapScreenShot(object : AMap.OnMapScreenShotListener {override fun onMapScreenShot(p0: Bitmap?) {TODO("Not yet implemented")}override fun onMapScreenShot(p0: Bitmap?, p1: Int) {TODO("Not yet implemented")}})

五、代碼

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/bj"android:layout_width="60dp"android:layout_height="wrap_content"android:background="@drawable/button_bg"android:gravity="center"android:padding="10dp"android:text="北京"android:textSize="18dp" /><TextViewandroid:id="@+id/gz"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:background="@drawable/button_bg"android:gravity="center"android:padding="10dp"android:text="廣州"android:textSize="18dp" /><TextViewandroid:id="@+id/xa"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:background="@drawable/button_bg"android:gravity="center"android:padding="10dp"android:text="西安"android:textSize="18dp" /><ImageViewandroid:id="@+id/share"android:layout_width="40dp"android:layout_height="40dp"android:layout_marginLeft="20dp"android:scaleType="fitXY"android:src="@drawable/screenshot" /></LinearLayout></FrameLayout>
package com.example.myapplicationimport android.graphics.Bitmap
import android.graphics.Color
import android.location.Location
import android.os.Bundle
import android.util.Log
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.ComponentActivity
import com.amap.api.maps.AMap
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.MapView
import com.amap.api.maps.model.BitmapDescriptorFactory
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Marker
import com.amap.api.maps.model.MarkerOptions
import com.amap.api.maps.model.Poi
import com.amap.api.maps.model.PolylineOptions
import com.amap.api.maps.utils.overlay.SmoothMoveMarkerclass TestActivity : ComponentActivity() {private var mapView: MapView? = nullprivate var map: AMap? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.test_activity)initMap(savedInstanceState)initView()}private fun initView() {findViewById<TextView>(R.id.bj).setOnClickListener { moveCenterTo(LATLNG_BJ) }findViewById<TextView>(R.id.gz).setOnClickListener { moveCenterTo(LATLNG_GZ) }findViewById<TextView>(R.id.xa).setOnClickListener { moveCenterTo(LATLNG_XA) }findViewById<ImageView>(R.id.share).setOnClickListener {map?.getMapScreenShot(object : AMap.OnMapScreenShotListener {override fun onMapScreenShot(p0: Bitmap?) {TODO("Not yet implemented")}override fun onMapScreenShot(p0: Bitmap?, p1: Int) {TODO("Not yet implemented")}})}}private fun initMap(savedInstanceState: Bundle?) {mapView = findViewById(R.id.map)mapView?.onCreate(savedInstanceState)mapView?.let {map = it.map}map?.apply {uiSettings.let {it.isRotateGesturesEnabled = falseit.isZoomControlsEnabled = falseit.isTiltGesturesEnabled = false}moveCamera(CameraUpdateFactory.zoomTo(8.0f))//自定義圖層
//            val options = CustomMapStyleOptions().apply {
//                isEnable = true
//                styleId = ""
//            }
//            setCustomMapStyle(options)//            mapType = AMap.MAP_TYPE_NIGHTsetOnMapLoadedListener(object : AMap.OnMapLoadedListener {override fun onMapLoaded() {Log.e(TAG, "onMapLoaded...")//AnimatorUtil.obtainLinePointF(mapView, MARKER1, MARKER2)
//                    Handler().postDelayed(object : Runnable{
//                        override fun run() {
//                            AnimatorUtil.obtainLinePointF(mapView, MARKER2, MARKER3)
//                        }
//                    }, 500)}})//自帶放大縮小接口setOnCameraChangeListener(object : AMap.OnCameraChangeListener {override fun onCameraChange(p0: CameraPosition?) {//Log.e(TAG, "onCameraChange + ${p0?.toString()}")}override fun onCameraChangeFinish(p0: CameraPosition?) {Log.e(TAG, "onCameraChangeFinish + ${p0?.toString()}")}})//map point點(diǎn)擊事件addOnMapClickListener(object : AMap.OnMapClickListener {override fun onMapClick(p0: LatLng?) {Log.e(TAG, "onMapClick + ${p0?.toString()}")}})//地圖自帶poi點(diǎn)擊事件addOnPOIClickListener(object : AMap.OnPOIClickListener {override fun onPOIClick(p0: Poi?) {Log.e(TAG, "onPOIClick + ${p0?.toString()}")}})addOnMarkerClickListener(object : AMap.OnMarkerClickListener {override fun onMarkerClick(p0: Marker?): Boolean {Log.e(TAG, "onMarkerClick + ${p0?.id}")return true}})setOnMyLocationChangeListener(object : AMap.OnMyLocationChangeListener {override fun onMyLocationChange(p0: Location?) {Log.e(TAG, "setOnMyLocationChangeListener + ${p0?.toString()}")p0?.let {moveCamera(CameraUpdateFactory.newLatLng(LatLng(it.latitude, it.longitude)))}}})//繪制marker點(diǎn)val marker1: MarkerOptions = MarkerOptions().apply {position(MARKER1)}val marker2: MarkerOptions = MarkerOptions().apply {position(MARKER2)}val list = ArrayList<MarkerOptions>()list.add(marker1)list.add(marker2)addMarkers(list, false)//            val builder = LatLngBounds.builder().apply {
//                include(MARKER1)
//                include(MARKER2)
//                include(MARKER3)
//                include(MARKER4)
//            }
//            val bounds = builder.build()
//            moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 300))//繪制marker折線val latLngList = ArrayList<LatLng>()latLngList.add(MARKER1)latLngList.add(MARKER2)addPolyline(PolylineOptions().addAll(latLngList).width(3f).color(Color.RED))//軌跡SmoothMoveMarker(map).apply {setDescriptor(BitmapDescriptorFactory.fromResource(R.drawable.smooth))setPoints(latLngList)setTotalDuration(5)startSmoothMove()}}}private fun moveCenterTo(latLng: LatLng) {val cameraUpdate = CameraUpdateFactory.newLatLng(latLng)map?.moveCamera(cameraUpdate)}override fun onResume() {super.onResume()mapView?.onResume()}override fun onPause() {super.onPause()mapView?.onPause()}override fun onDestroy() {super.onDestroy()mapView?.onDestroy()}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)mapView?.onSaveInstanceState(outState)}companion object {private const val TAG = "TestActivity"private val MARKER1 = LatLng(40.02855349893361, 116.3052948784071)private val MARKER2 = LatLng(41.093445392798934, 116.11030767409169)private val LATLNG_BJ = LatLng(39.90508988475248, 116.4083842390264)private val LATLNG_GZ = LatLng(23.11523439186301, 113.24706837513949)private val LATLNG_XA = LatLng(34.321288624880815, 108.94042782381482)}
}

http://aloenet.com.cn/news/28713.html

相關(guān)文章:

  • 怎樣創(chuàng)作網(wǎng)站電腦培訓(xùn)班價(jià)目表
  • 做婚禮策劃的網(wǎng)站英文網(wǎng)站seo發(fā)展前景
  • 網(wǎng)站建設(shè)相關(guān)基礎(chǔ)實(shí)驗(yàn)總結(jié)注冊(cè)網(wǎng)站免費(fèi)注冊(cè)
  • example郵箱注冊(cè)網(wǎng)站最近剛發(fā)生的新聞
  • 網(wǎng)站專題設(shè)計(jì)軟件谷歌優(yōu)化工具
  • 百度商橋怎樣綁定網(wǎng)站百度搜索推廣操作簡(jiǎn)要流程
  • 網(wǎng)站水印怎么做的企點(diǎn)
  • 用vue做網(wǎng)站谷歌推廣費(fèi)用多少
  • 兩學(xué)一做網(wǎng)站無(wú)法做題鞏義網(wǎng)站優(yōu)化公司
  • 西安網(wǎng)站建設(shè)制作價(jià)格低免費(fèi)友鏈平臺(tái)
  • 玉兒做春夢(mèng)網(wǎng)站網(wǎng)站優(yōu)化建議
  • 百度云 wordpress 教程視頻優(yōu)化網(wǎng)站推廣教程整站
  • 花錢想貸款結(jié)果成了做網(wǎng)站網(wǎng)站制作大概多少錢
  • 現(xiàn)在一般做B2B類網(wǎng)站用vue營(yíng)銷方式和手段有哪些
  • 網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)要求真正免費(fèi)的網(wǎng)站建站平臺(tái)運(yùn)營(yíng)
  • 做五金有哪些網(wǎng)站推廣觀看b站的廣告網(wǎng)站平臺(tái)
  • 網(wǎng)站做淘寶推廣收入平臺(tái)seo什么意思
  • 網(wǎng)站怎樣在360做優(yōu)化溫州seo推廣外包
  • 政府網(wǎng)站建設(shè)方案范文 工作方案寰宇seo
  • 網(wǎng)站設(shè)計(jì)要多少錢網(wǎng)絡(luò)營(yíng)銷培訓(xùn)班
  • 做網(wǎng)站軟件要錢嗎都有什么推廣平臺(tái)
  • 知名網(wǎng)站開發(fā)語(yǔ)言成都網(wǎng)絡(luò)推廣哪家好
  • 網(wǎng)站怎么做最省錢百度資源搜索
  • 推廣網(wǎng)站seo廈門推廣平臺(tái)較好的
  • 建筑設(shè)計(jì)網(wǎng)站網(wǎng)址外鏈火
  • 景安網(wǎng)站備案的服務(wù)碼百度網(wǎng)絡(luò)營(yíng)銷app
  • 注冊(cè)城鄉(xiāng)規(guī)劃師難度優(yōu)化網(wǎng)站打開速度
  • asp.net 網(wǎng)站管理工具 安全營(yíng)銷軟件
  • 安徽網(wǎng)站開發(fā)費(fèi)用做谷歌推廣比較好的公司
  • wordpress建的網(wǎng)站打開太慢優(yōu)化大師win10能用嗎