高德地圖心得(一)—定位與移動(Maker處於地圖中心)
阿新 • • 發佈:2019-01-28
摘要:從事android開發已有一年多,做了不少有關地圖開發的專案。遇到的坑也很多(官方demo畢竟只是參考,不一定是最簡潔的),下面就用程式碼展示我認為最簡潔的核心功能點,這也是我第一篇部落格,希望對你們能有些幫助!
//地圖定位,使自定位Maker處於地圖中心 aMap.setOnMyLocationChangeListener(new AMap.OnMyLocationChangeListener() { @Override public void onMyLocationChange(Location location) { LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); Constant.latLng = latLng; if (localMark == null) { String url = ""; if (!TextUtils.isEmpty(TokenSavemanager.userId(MainActivity.this))) { url = UserInfoManager.getUserBean(MainActivity.this).getPhoto(); } View view = new MyMarkerView(MainActivity.this, url, R.mipmap.img_head_maintenance_default);//自定義Maker localMark = aMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromView(view))); } else { localMark.setPosition(latLng); } requestMarksData(latLng);//請求網路,載入其餘的Maker(注:給這些Maker設Tag,例:maker.setObject("Tag")) } }); //地圖移動,自定義Maker始終處於地圖中心點 aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { if (localMark != null) { LatLng latLng = cameraPosition.target; localMark.setPosition(latLng); } } @Override public void onCameraChangeFinish(CameraPosition cameraPosition) { removeMarksFromMap();//移動結束的時候,先移除地圖上Maker(除了處於地圖中心的Maker) requestMarksData(cameraPosition.target); } }); //移除地圖上除中心點的所有Maker private void removeMarksFromMap() { List<Marker> saveMarkerList = aMap.getMapScreenMarkers();//獲得所有地圖上所有Maker. for (Marker marker : saveMarkerList) { if (marker.getObject() != null && marker.getObject().toString().equals("tag")) { marker.remove(); } } } }