当前位置: 首页 > news >正文

苏州市网站制作服务专业的网站建站公司

苏州市网站制作,服务专业的网站建站公司,瑞安 网站建设,高端网站制作网站设计一、获取高德平台key 【1】基于application包名sha1值在高德控制台获取key值#xff0c;详情参考#xff1a; 获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 【2】在manifest中声明权限 【3】将拿到的key值在manifest中进行声明 !--允许程序打开网络… 一、获取高德平台key 【1】基于application包名sha1值在高德控制台获取key值详情参考  获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 【2】在manifest中声明权限 【3】将拿到的key值在manifest中进行声明 !--允许程序打开网络套接字-- uses-permission android:nameandroid.permission.INTERNET / !--允许程序设置内置sd卡的写权限-- uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / !--允许程序获取网络状态-- uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !--允许程序访问WiFi网络信息-- uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / !--允许程序访问CellID或WiFi热点来获取粗略的位置-- uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION / meta-dataandroid:namecom.amap.api.v2.apikeyandroid:valuexxxxxxxxxxxx / 二、集成依赖 在app build.gradle文件中增加高德地图依赖 implementation(com.amap.api:3dmap:9.8.2) 三、显示地图 概述-Android 地图SDK | 高德地图API 在xml文件中声明MapView控件并在class中重写 onCreate 方法此方法必须重写注意生命周期的管理 com.amap.api.maps.MapViewandroid:idid/mapandroid:layout_widthmatch_parentandroid:layout_heightmatch_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) } 地图默认中心点为北京天安门 四、高德地图具体使用 以下对于地图的控制使用之前需要拿到AMap对象 map mapView?.map 1、切换城市中心点 private fun moveCenterTo(latLng: LatLng) {val cameraUpdate CameraUpdateFactory.newLatLng(latLng)map?.moveCamera(cameraUpdate) } Android高德地图切换城市中心点展示 2、设置缩放级别 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 ArrayListMarkerOptions() list.add(marker1) list.add(marker2) map?.addMarkers(list, false) 如下图所示不设置icon默认展示蓝色定位图标。 11 针对marker可以设置的属性 position在地图上标记位置的经纬度值必填参数title点标记的标题snippet点标记的内容draggable点标记是否可拖拽visible点标记是否可见anchor点标记的锚点alpha点的透明度 public final java.util.ArrayListMarker addMarkers(java.util.ArrayListMarkerOptions options, boolean moveToCenter) 在地图上添一组图片标记marker对象并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示。 参数: options - 多个markerOptions对象它们分别定义了对应marker的属性信息。 moveToCenter - 是否改变地图状态默认为false。 返回: 返回一组被添加的marker对象。 4、绘制折线 val latLngList ArrayListLatLng() 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、两点之间距离计算 AMapUtils.calculateLineDistance(latLng1,latLng2) 7、切换地图图层 【1】预设模式 mapType AMap.MAP_TYPE_NIGHT 【2】在线自定义模式 val options CustomMapStyleOptions().apply {isEnable truestyleId } map?.setCustomMapStyle(options) 8、手势交互 map?.uiSettings.let {it.isRotateGesturesEnabled falseit.isZoomControlsEnabled falseit.isTiltGesturesEnabled false } 更多设置可参考https://a.amap.com/lbs/static/unzip/Android_Map_Doc/3D/index.html?overview-summary.html 9、地图状态监听 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点击事件addOnMapClickListener(object : AMap.OnMapClickListener {override fun onMapClick(p0: LatLng?) {Log.e(TAG, onMapClick ${p0?.toString()})}})//地图自带poi点击事件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对象进行处理 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 version1.0 encodingutf-8? FrameLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalcom.amap.api.maps.MapViewandroid:idid/mapandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent /LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginTop20dpandroid:gravitycenterandroid:orientationhorizontalTextViewandroid:idid/bjandroid:layout_width60dpandroid:layout_heightwrap_contentandroid:backgrounddrawable/button_bgandroid:gravitycenterandroid:padding10dpandroid:text北京android:textSize18dp /TextViewandroid:idid/gzandroid:layout_width60dpandroid:layout_heightwrap_contentandroid:layout_marginLeft20dpandroid:backgrounddrawable/button_bgandroid:gravitycenterandroid:padding10dpandroid:text广州android:textSize18dp /TextViewandroid:idid/xaandroid:layout_width60dpandroid:layout_heightwrap_contentandroid:layout_marginLeft20dpandroid:backgrounddrawable/button_bgandroid:gravitycenterandroid:padding10dpandroid:text西安android:textSize18dp /ImageViewandroid:idid/shareandroid:layout_width40dpandroid:layout_height40dpandroid:layout_marginLeft20dpandroid:scaleTypefitXYandroid:srcdrawable/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() {findViewByIdTextView(R.id.bj).setOnClickListener { moveCenterTo(LATLNG_BJ) }findViewByIdTextView(R.id.gz).setOnClickListener { moveCenterTo(LATLNG_GZ) }findViewByIdTextView(R.id.xa).setOnClickListener { moveCenterTo(LATLNG_XA) }findViewByIdImageView(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点击事件addOnMapClickListener(object : AMap.OnMapClickListener {override fun onMapClick(p0: LatLng?) {Log.e(TAG, onMapClick ${p0?.toString()})}})//地图自带poi点击事件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点val marker1: MarkerOptions MarkerOptions().apply {position(MARKER1)}val marker2: MarkerOptions MarkerOptions().apply {position(MARKER2)}val list ArrayListMarkerOptions()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 ArrayListLatLng()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 TestActivityprivate 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://www.hkea.cn/news/14543451/

相关文章:

  • 辽宁建设工程信息网官网新网站入口有网址如何做网站赚钱
  • 在源码之家下载的网站模板可以作为自己的网站吗有没有帮人做数学题的网站
  • 淘宝联盟怎么做网站推广化妆品网站设计报告
  • 深圳做网站推广公司专业APP客户端做网站
  • 常州做沙滩旗的公司网站齐鲁人才招聘网
  • 网站建设佰金手指科杰二五关于西安网页设计
  • 众筹网站建设报价绵阳做网站的
  • 全网营销网站怎么做用手机做免费自助网站
  • 台州网站优化方案中国建行官网首页
  • 跨境电商 网站开发seo优化一般包括哪些内容()
  • 常平做网站公司简介50字
  • 广西城乡建设网站换友网站
  • 网站分为那几个模块电子商务网站建设人才调研
  • 网站程可以自己做吗建站开始的前6个月多少外链最合适
  • 渭南做网站电话长沙seo步骤
  • 电子商务网站的规划与分析WordPress的博客添加按钮
  • 农业网站 源码中国免费素材网站
  • 中山网站制作建设做ppt常用图片网站有哪些
  • 做调查问卷能挣钱的网站logo免费一键生成
  • 连云港市建设工程安全监督站网站wordpress插件wp
  • 银川网站建设公司电话蒙古文网站建设
  • 网站如何发布和推广17网一起做网店潮汕
  • 百度网站推广费用多少万链网站做的怎么样?
  • 外贸模板建站网站管理的含义
  • 化妆品网站推广策划书wordpress加速插件
  • 双城网站建设公司新手如何制作网站
  • 做视频网站服务器怎么选择网站推广运营招聘
  • 屏山县建设局网站最近热点新闻事件
  • 个人网站建设咨询电话服务营销
  • 做泰迪狗网站的意义wordpress验证码国内