안드로이드가 고덕지도를 집적한 것에 대해서...지도 보이기
6833 단어 지도.
자, 오늘 우리 함께 고덕 3D 지도 코드의 통합을 완성하고 AppKey를 신청합니다. 고덕지도 오픈 플랫폼의 컨트롤러에 가서 등록하세요.
현재 고덕 지도 통합은 안드로이드 스튜디오 의존을 지원하고 있습니다. 너무 간단하지 마세요. 여기 제가 통합한 것은 3D 맵, 포지셔닝, 검색입니다.
dependencies {
implementation 'com.amap.api:3dmap:latest.integration'
implementation 'com.amap.api:search:latest.integration'
implementation 'com.amap.api:location:latest.integration'
}
권한 선언
APPKey
코드를 훑기 시작하고 먼저 인터페이스를 초기화합니다.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_layout);
mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
aMap = mapView.getMap();
aMap.getUiSettings().setScaleControlsEnabled(true);//
aMap.getUiSettings().setZoomControlsEnabled(false);//
aMap.moveCamera(CameraUpdateFactory.zoomTo(ZOOM_MAP));
aMap.setMyLocationEnabled(true);//
aMap.setLocationSource(this);// ( )
initLocationOption();//
}
초기화 위치 매개 변수: 위치는 세 가지로 나뉜다: HightAccuracy(고정밀), BatterySaving(저전력), DeviceSensors(디바이스만)
private void initLocationOption() {
AMapLocationClientOption.AMapLocationMode mode;
if (Utils.isGpsOpen(this)) {
mode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy;// 。
Log.e(TAG, " --->>> ");
} else if (Utils.isGpsNetWorkOpen(this)) {
mode = AMapLocationClientOption.AMapLocationMode.Battery_Saving;// 。
Log.e(TAG, " --->>> ");
} else {
mode = AMapLocationClientOption.AMapLocationMode.Device_Sensors;// 。
Log.e(TAG, " --->>> ");
}
if (mLocationOption == null) {
mLocationOption = new AMapLocationClientOption()
.setLocationMode(mode)
.setNeedAddress(true)// ( )
.setInterval(2000)// , , 2000ms, 1000ms。
.setHttpTimeOut(8000)// , 30000 , 8000 。
.setLocationCacheEnable(true);// , 。
} else {
mLocationOption.setLocationMode(mode);
}
if (mLocationClient == null) {
mLocationClient = new AMapLocationClient(getApplicationContext());//
mLocationClient.setLocationListener(this);//
mLocationClient.setLocationOption(mLocationOption);
} else {
mLocationClient.setLocationOption(mLocationOption);
}
mLocationClient.startLocation();//
}
위치 활성화
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
initLocationOption();
mLocationListener = onLocationChangedListener;
}
위치 추적 및 맵 수명주기 관리
@Override
public void deactivate() {
releaseClient();
}
@Override
protected void onResume() {
super.onResume();
if (mapView != null) mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
if (mapView != null) mapView.onPause();
if (mLocationClient != null) mLocationClient.stopLocation();// ,
}
private void releaseClient() {
if (mLocationClient != null) {
mLocationClient.stopLocation();// ,
mLocationClient.onDestroy();// , 。
mLocationClient = null;
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (mapView != null) mapView.onSaveInstanceState(outState);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mapView != null) mapView.onDestroy();
releaseClient();
}
현재 위치의 좌표 정보를 onLocationChanged()에서 가져올 수 있는 위치 콜백
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
LatLng latLng;
if (aMapLocation.getErrorCode() == 0) {
this.aMapLocation = aMapLocation;
if (mLocationClient != null) {
mLocationClient.stopLocation();
}
mLocationListener.onLocationChanged(aMapLocation);//
latLng = new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude());
} else {
latLng = centerLatLng;//
Toast(aMapLocation.getErrorInfo());
// , ErrCode( ) ,errInfo , 。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
}
aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));// ,
}
}
마지막으로 미리 보기 사진 보내드릴게요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[iOS] 맵(MKMapView)에 핀이 표시되지 않았을 때 확인Stack Overflow의 해시태그를 구독하니 "지도에 핀이 표시되지 않으니 도와주세요!"이런 문제를 자주 본다.대개 다음 3가지 유형의 원인이기 때문에 확인해야 할 부분을 정리해 보겠습니다. 의외로 설정을 잊어버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.