MapmyIndia Android SDK — добавление полилиний на карту
Много раз в приложении для Android, которое отображает карты в своем приложении для Android, мы можем видеть карты, а также отображать полилинии на картах. В этой статье мы рассмотрим, как добавить полилинии на карту с помощью Map My India SDK в Android.
Note: This Android article covered in both Java and Kotlin languages.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio ».
Шаг 2. Загрузка SDK для Map My India
Перейдите по ссылке и загрузите jar-файл для Map My India SDK. После загрузки скопируйте файл, чтобы добавить его в наш проект. Перейдите в раздел «Проект» в проекте Android Studio. Затем перейдите в «Имя проекта»> «Приложение»> «Библиотеки». Щелкните его правой кнопкой мыши и просто вставьте загруженный файл jar в эту папку.
Шаг 3: Добавление зависимости в файл build.gradle
Перейдите к файлу app > build.gradle и добавьте к нему приведенную ниже зависимость в разделе зависимостей.
implementation "com.google.code.gson:gson:2.3"
implementation files("libs/map_sdk_2.1.jar")После добавления зависимости просто синхронизируйте свой проект.
Шаг 4: Работа с файлом activity_main.xml
Перейдите к app > res > layout > activity_main.xml и добавьте в него приведенный ниже код. В код добавлены комментарии для более подробного ознакомления.
XML
| <?xmlversion="1.0"encoding="utf-8"?><RelativeLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">     <!--on below line we are creating a map view-->    <com.mmi.MapmyIndiaMapView        android:id="@+id/idMapView"        android:layout_width="match_parent"        android:layout_height="match_parent"/> </RelativeLayout> | 
Шаг 5. Добавление разрешений в файл AndroidManifest.xml
Перейдите к файлу app>AndroidManifest.xml и добавьте к нему указанные ниже разрешения.
XML
| <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | 
Теперь добавьте приведенный ниже код в тег приложения в файле AndroidManifest.xml, чтобы использовать устаревшую библиотеку в нашем приложении.
XML
| <uses-library  android:name="org.apache.http.legacy"  android:required="false"/> | 
Шаг 6. Создание ключа API для использования Map My India SDK.
Перейдите по ссылке. Зарегистрируйтесь, указав свой адрес электронной почты и пароль, и вы увидите экран ниже. Внутри этого перейдите на вкладку учетных данных, чтобы увидеть свой ключ API. Скопируйте этот ключ API, который мы должны использовать в нашем проекте.
Шаг 7: Работа с файлом MainActivity
Перейдите к приложению > java > имени пакета вашего приложения > файлу MainActivity и добавьте в него приведенный ниже код. В код добавлены комментарии для более подробного ознакомления.
Kotlin
| packagecom.gtappdevelopers.mapmyindiakotlin importandroid.os.Bundleimportandroidx.appcompat.app.AppCompatActivityimportcom.mmi.LicenceManagerimportcom.mmi.MapmyIndiaMapViewimportcom.mmi.layers.Markerimportcom.mmi.layers.PathOverlayimportcom.mmi.util.GeoPointimportjava.util.* classMainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        // on below line we are setting rest api key and map sdk key.        LicenceManager.getInstance().restAPIKey = "Enter API key"        LicenceManager.getInstance().mapSDKKey = "Enter your API key"        // on below line we are creating variables for map view and initializing it.        val mapmyIndiaMapView = findViewById<MapmyIndiaMapView>(R.id.idMapView)        // on below line we are getting our map view.        val mapView = mapmyIndiaMapView.mapView        // on below line we are creating an array list        // to display all markers.        val geoPoints = ArrayList<GeoPoint>()        // on below line adding marker geo point to our list.        geoPoints.add(GeoPoint(28.549356, 77.26780099999999))        geoPoints.add(GeoPoint(28.551844, 77.26749))        geoPoints.add(GeoPoint(28.554454, 77.265473))        geoPoints.add(GeoPoint(28.549637999999998, 77.262909))        // on below line we are running loop to display marker        for(i in geoPoints) {            // on below line we are creating our marker.            val marker = Marker(mapView)            // on below line we are setting marker position.            marker.position = i            // on below line we are adding anchor for our marker.            marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER)            // on below line we are adding our marker to map view.            mapView.overlays.add(marker)        }        // on below line we are creating a path        // overlay to add a polyline.        val pathOverlay = PathOverlay(this)        // on below line we are setting color for polyline.        pathOverlay.color = resources.getColor(R.color.purple_200)        // on below line we are setting width of polyline        pathOverlay.width = 10f        // on below line we are setting points on         // which we have to display poly line.        pathOverlay.points = geoPoints        // on below line we are setting         // bounds for map view.        mapView.setBounds(geoPoints)        // on below line we are adding path overlay.        mapView.overlays.add(pathOverlay)        mapView.invalidate()    }} | 
Java
| packagecom.gtappdevelopers.mapmyindia; importandroid.os.Bundle; importandroidx.appcompat.app.AppCompatActivity; importcom.mmi.LicenceManager;importcom.mmi.MapView;importcom.mmi.MapmyIndiaMapView;importcom.mmi.layers.Marker;importcom.mmi.layers.PathOverlay;importcom.mmi.util.GeoPoint; importjava.util.ArrayList; publicclassMainActivity extendsAppCompatActivity {     @Override    protectedvoidonCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // on below line we are setting rest api key and map sdk key.        LicenceManager.getInstance().setRestAPIKey("Enter your API key");        LicenceManager.getInstance().setMapSDKKey("Enter your API key");        // on below line we are creating variables for map view and initializing it.        MapmyIndiaMapView mapmyIndiaMapView = findViewById(R.id.idMapView);        // on below line we are getting our map view.        MapView mapView = mapmyIndiaMapView.getMapView();        // on below line we are creating an array list         // to display all markers.        ArrayList<GeoPoint> geoPoints = newArrayList<>();        // on below line adding marker geo point to our list.        geoPoints.add(newGeoPoint(28.549356, 77.26780099999999));        geoPoints.add(newGeoPoint(28.551844, 77.26749));        geoPoints.add(newGeoPoint(28.554454, 77.265473));        geoPoints.add(newGeoPoint(28.549637999999998, 77.262909));        // on below line we are running loop to display marker        for(inti = 0; i < geoPoints.size(); i++) {            // on below line we are creating our marker.            Marker marker = newMarker(mapView);            // on below line we are setting marker position.            marker.setPosition(geoPoints.get(i));            // on below line we are adding anchor for our marker.            marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER);            // on below line we are adding our marker to map view.            mapView.getOverlays().add(marker);        }        // on below line we are creating a path overlay to add a polyline.        PathOverlay pathOverlay = newPathOverlay(this);        // on below line we are setting color for polyline.        pathOverlay.setColor(getResources().getColor(R.color.purple_200));        // on below line we are setting width of polyline        pathOverlay.setWidth(10);        // on below line we are setting points on         // which we have to display poly line.        pathOverlay.setPoints(geoPoints);        // on below line we are setting        // bounds for map view.        mapView.setBounds(geoPoints);        // on below line we are adding path overlay.        mapView.getOverlays().add(pathOverlay);        mapView.invalidate();     }} | 
Теперь запустите ваше приложение, чтобы увидеть результат.
Выход: