banner



How To Create Own Map In Android

Have you ever been on a road trip and wanted to make notes about the places you've visited; needed to warn your future self about some heartburn-inducing greasy food from a roadside diner; or you wanted to keep reminders about the best menu items at your favorite local restaurants?

If you answered "yes" to any of those questions, then you're in luck! You're about to build PlaceBook, an app that meets all of those needs by letting you bookmark and make notes using a map-based interface.

Getting started

While building PlaceBook, you'll use familiar techniques from the previous sections and learn about several new Android APIs. Along the way, you'll use:

  • Google Maps API to display a map, track the user's location and add custom markers.
  • Google Places API to display place information and search for nearby places.
  • Room Persistence Library to store data.

You'll also learn about Implicit Intents for sharing your data to other apps.

There's a lot of ground to cover, but in the end, the final product will look like this:

About PlaceBook

PlaceBook starts by displaying a Google Map centered around your current location. The map will display common places, and allow you to bookmark them. You can display details for bookmarked places and edit the place data and corresponding photo.

Making a plan

With a large number of features to implement, it's best to think about them in bite-sized pieces. From there, you can slowly build up to the finished product. The steps you'll take to accomplish this are as follows:

Location service components

The Android SDK provides three main components related to location and mapping:

Map wizard walk-through

To save time, you'll use the Maps Activity project template to generate an app with a single Activity that displays a map.

Google Maps API key

Before your app will work, you need to generate an API key using the free Google Developer Console, which requires a Google account.

          <string name="google_maps_key"         templateMergeStrategy="preserve"         translatable="false">         AIza5sD-_G2dq7PjafW-Ad4pKpU5a</string>                  

Getting the keystore fingerprint

Although Android Studio conveniently placed your debug keystore fingerprint in the XML file, it's helpful to know how to get the fingerprint yourself should you ever need to regenerate it. The following instructions work for debug builds; getting the SHA1 key for release builds is covered in Section VI, "Submitting Your App".

          keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android                  
          keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android.                  
          Alias name: androiddebugkey Creation date: Jan 01, 2013 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Android Debug, O=Android, C=US Issuer: CN=Android Debug, O=Android, C=US Serial number: 4aa9b300 Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033 Certificate fingerprints:      MD5:  18:5E:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:A4      SHA1: A5:1F:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:46      Signature algorithm name: SHA1withRSA      Version: 3                  

Maps and the emulator

If you're installing on a device, that's all you need. However, if you're using an emulator, then things can get a little more complicated.

Running the app

Launch the app from Android Studio.

          Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map. Google Maps Android API: In the Google Developer Console (https://console.developers.google.com) Ensure that the "Google Maps Android API v2" is enabled. Ensure that the following Android Key exists:                                                                                        API Key: YOUR_KEY_HERE     Android Application (<cert_fingerprint>;<package_name>): 6A:27:6F:34:38:DA:D3:04:C8:9C:8F:41:ED:BB:B7:18:02:77:67:D2;com.raywenderlich.placebook                  

Project dependencies

Before you can use maps in your app, you have to add the two required dependencies. To find the first one, open build.gradle from your application module folder. In the dependencies section, you'll see the following line:

          implementation 'com.google.android.gms:play-services-maps:16.0.0'                  

The manifest

First, from app/manifests, open AndroidManifest.xml. It'll look like the following, with your API key displayed in place of @string/google_maps_key:

          <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.raywenderlich.placebook">    <!--        The ACCESS_COARSE/FINE_LOCATION permissions are not required to use        Google Maps Android API v2, but you must specify either coarse or fine        location permissions for the 'MyLocation' functionality.   -->   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <application       android:allowBackup="true"       android:icon="@mipmap/ic_launcher"       android:label="@string/app_name"       android:roundIcon="@mipmap/ic_launcher_round"       android:supportsRtl="true"       android:theme="@style/AppTheme">      <!--          The API key for Google Maps-based APIs is defined as a string resource.          (See the file "res/values/google_maps_api.xml").          Note that the API key is linked to the encryption key used to sign the APK.          You need a different API key for each encryption key, including the release key that is used to          sign the APK for publishing.          You can define the keys for the debug and release targets in src/debug/ and src/release/.     -->     <meta-data         android:name="com.google.android.geo.API_KEY"         android:value="@string/google_maps_key" />      <activity         android:name=".MapsActivity"         android:label="@string/title_activity_maps">       <intent-filter>         <action android:name="android.intent.action.MAIN" />          <category android:name="android.intent.category.LAUNCHER" />       </intent-filter>     </activity>   </application>  </manifest>                  

The activity and layout

Open MapsActivity.kt. This is the startup Activity created from the Maps template. Note that it inherits from AppCompatActivity and the OnMapReadyCallback interface.

          class MapsActivity : AppCompatActivity(), OnMapReadyCallback {                  

Map display options

There are two ways to display a map in your app:

          override fun onCreate(savedInstanceState: Bundle?) {   super.onCreate(savedInstanceState)   setContentView(R.layout.activity_maps)   // Obtain the SupportMapFragment and get notified when the map is ready to be used.   val mapFragment = supportFragmentManager       .findFragmentById(R.id.map) as SupportMapFragment   mapFragment.getMapAsync(this) }                  
          <fragment     android:id="@+id/map"     android:name=         "com.google.android.gms.maps.SupportMapFragment"     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:map="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context="com.raywenderlich.placebook.MapsActivity"/>                  

Asynchronous map setup

When you call getMapAsync(), the SupportMapFragment object handles all of the work of setting up the map and creating a GoogleMap object. The GoogleMap object is what you'll use to control and query the map.

          override fun onMapReady(googleMap: GoogleMap) {   mMap = googleMap    // Add a marker in Sydney and move the camera   val sydney = LatLng(-34.0, 151.0)   mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))   mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) }                  

The difficulty of determining locations

Determining a user's location is a rather involved process under the hood. There are multiple sources of location data to handle, and they all affect your device's idea of where it is in the world.

Location events over time
Lozexiev onerpb inuj yawa

Where to go from here?

As you can see, there are many moving parts, and there is a lot of code required to provide a seamless experience to the user. Thankfully, the location APIs are there to do the heavy lifting for you.

14. User Location and Permissions 12. Material Design

How To Create Own Map In Android

Source: https://www.raywenderlich.com/books/android-apprentice/v3.0/chapters/13-creating-a-map-based-app

Posted by: lopezwavers.blogspot.com

0 Response to "How To Create Own Map In Android"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel