https://github.com/trendyol/mapskit
https://github.com/trendyol/mapskit
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/trendyol/mapskit
- Owner: Trendyol
- License: apache-2.0
- Created: 2021-06-26T21:26:55.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-02-03T11:19:31.000Z (11 months ago)
- Last Synced: 2025-03-22T05:33:01.439Z (10 months ago)
- Language: Kotlin
- Size: 4.11 MB
- Stars: 28
- Watchers: 15
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MapsKit
[](https://jitpack.io/#Trendyol/MapsKit)
[](https://opensource.org/licenses/Apache-2.0)
MapsKit is a all-in-one library that supports both HMS and GMS maps.
## Installation
Add this repository to your project-level build.gradle file.
```groovy
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](https://developer.huawei.com/consumer/en/codelab/HMSMapKit/index.html#0) and [Google Add a map to your Android app](https://developers.google.com/codelabs/maps-platform/maps-platform-101-android#0)
## 📌 Sample App Usage
#### 1- Google Maps:
Add a single line in local.properties that looks like
```GOOGLE_MAPS_API_KEY=YOUR_KEY```
#### 2- Huawei Maps:
Follow the [codelab](https://developer.huawei.com/consumer/en/codelab/HMSMapKit/index.html#0), 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.
#### 3- Build & Run
## 📌 Library Usage
### 1- Google Maps:
You can integrate Google api key in 2 ways:
#### 🅰️ AndroidManifest
➡️ Add api key directly to AndroidManifest
```XML
```
#### 🅱️ Secret Gradle
➡️ 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
```XML
```
⚡️ Advantage: You don't commit the api key directly to github repo.
### 2- Huawei Maps:
➡️ 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](https://developer.huawei.com/consumer/en/codelab/HMSMapKit/index.html#0), create the agconnect-services.json file and paste it under the "app" directory.
#### 3- Build & Run
### Code:
Place the view in XML file.
```XML
```
Then get your Fragment/Activity ready for map initialization.
```kotlin
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)
}
}
```
License
--------
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
http://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.