MapsKit is a all-in-one library that supports both HMS and GMS maps.
Add this repository to your project-level build.gradle file.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Add this dependency to your app-level build.gradle file.
dependencies {
implementation 'com.github.Trendyol:MapsKit:1.0'
}
You'll still have to go through these steps at HMS MapKit Codelab and Google Add a map to your Android app
Add a single line in local.properties that looks like
GOOGLE_MAPS_API_KEY=YOUR_KEY
Follow the codelab, create the agconnect-services.json file and paste it under the "app" directory. Please don't forget that while you are creating application, need to enter package name in Huawei Console. This package name is unique. If you have any agconnect-services.json file, you can add to correct place and make your application id same with your package name which is exist in your json file. It is just for run and test the application.
You can integrate Google api key in 2 ways:
➡️ Add api key directly to AndroidManifest
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
➡️ Add a single line in local.properties that looks like
GOOGLE_MAPS_API_KEY=YOUR_API_KEY
➡️ To be able to read this key from the AndroidManifest.xml;
🛠 add this plugin in your app build.gradle
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
🛠 add this dependency in your project build.gradle
classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
➡️ Read this GOOGLE_MAPS_API_KEY from AndroidManifest.xml
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_GOOGLE_MAPS_API_KEY" />
⚡️ Advantage: You don't commit the api key directly to github repo.
➡️ Configure project-level build.gradle:
allprojects {
repositories {
// Add the Maven address.
maven {url 'https://developer.huawei.com/repo/'}
}
}
...
buildscript{
repositories {
// Add the Maven address.
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
// Add dependencies.
classpath 'com.huawei.agconnect:agcp:1.8.0.300'
}
}
➡️ Configure app-level build.gradle:
dependencies {
// Add dependencies.
implementation 'com.huawei.agconnect:agconnect-core:1.8.0.3000'
}
...
// Add the information to the bottom of the file.
apply plugin: 'com.huawei.agconnect'
➡️ Configure the project-level settings.gradle file
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
// Configure the Maven repository address for the HMS Core SDK.
maven { url 'https://developer.huawei.com/repo/' }
}
}
dependencyResolutionManagement {
...
repositories {
google()
mavenCentral()
// Configure the Maven repository address for the HMS Core SDK.
maven { url 'https://developer.huawei.com/repo/' }
}
}
➡️ Follow the codelab, create the agconnect-services.json file and paste it under the "app" directory.
Place the view in XML file.
<com.trendyol.mapskit.maplibrary.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Then get your Fragment/Activity ready for map initialization.
class MyFragment: IOnMapReadyCallback {
private var map: Map? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mapView.onCreate(savedInstanceState)
mapView.getMapAsync(this)
}
override fun onMapReady(map: Map) {
this.map = map
}
private fun moveCameraToPosition(latLng: LatLng) {
map?.animateCamera(CameraUpdate.NewLatLngZoom(latLng, ZOOM_LEVEL_STREET))
}
override fun onStart() {
super.onStart()
mapView.onStart()
}
override fun onResume() {
super.onResume()
mapView.onResume()
}
override fun onPause() {
mapView.onPause()
super.onPause()
}
override fun onStop() {
mapView.onStop()
super.onStop()
}
override fun onDestroy() {
mapView.onDestroy()
super.onDestroy()
}
override fun onSaveInstanceState(bundle: Bundle) {
mapView.onSaveInstanceState(bundle)
}
}
Copyright 2021 Trendyol.com
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.