Giter VIP home page Giter VIP logo

mapskit's Introduction

MapsKit

License

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.

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

📌 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, 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

<meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="YOUR_API_KEY" />

       🅱️ 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

<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.

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, create the agconnect-services.json file and paste it under the "app" directory.

3- Build & Run

Code:

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)
    }

}

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.

mapskit's People

Contributors

enofeb avatar furkant9 avatar erolaksoy avatar edaersu avatar

Stargazers

Oğuzhan Türkmen avatar  avatar  avatar Meriç Güller avatar Muhammed Samet Akgül avatar Adem ATİCİ avatar  avatar Buse Altaç avatar Mehmet Peker avatar Mücahid KAMBUR avatar Ogulcan avatar  avatar Burak Sak avatar  avatar Selim TOKSAL avatar Vahit Keskin avatar Yıldırım Tam avatar Nour Yasser avatar Ertugrul avatar goksu avatar  avatar Burak Çelik avatar yusufonderd avatar Cafer Mert Ceyhan avatar Fevzi Ömür Tekin avatar Taylan Sabırcan avatar Hasan Küçük avatar İbrahim Süren avatar

Watchers

Yiğit Darçın avatar James Cloos avatar Ahmet Can Güven avatar Uras Şenol avatar Zekeriya Keskin avatar  avatar Onur Aykac avatar erkutaras avatar Oğuzhan Demir avatar İbrahim Süren avatar  avatar Erdogan Oksuz avatar Cafer Kaya avatar Batuhan Apaydın avatar  avatar Muhammed Güven avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.