একটি মার্কার সহ একটি মানচিত্র যোগ করা হচ্ছে

এই টিউটোরিয়ালটি আপনাকে দেখায় কিভাবে আপনার অ্যান্ড্রয়েড অ্যাপে একটি Google মানচিত্র যুক্ত করবেন। একটি নির্দিষ্ট অবস্থান নির্দেশ করতে মানচিত্রে একটি মার্কার রয়েছে, যাকে একটি পিনও বলা হয়।

Android এর জন্য Maps SDK ব্যবহার করে একটি Android অ্যাপ তৈরি করতে টিউটোরিয়ালটি অনুসরণ করুন। প্রস্তাবিত উন্নয়ন পরিবেশ হল অ্যান্ড্রয়েড স্টুডিও

কোড পান

GitHub থেকে Google Maps Android API v2 স্যাম্পল রিপোজিটরি ক্লোন করুন বা ডাউনলোড করুন

কার্যকলাপের জাভা সংস্করণ দেখুন:

    // Copyright 2020 Google LLC
//
// 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.

package com.example.mapwithmarker;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

/**
 * An activity that displays a Google map with a marker (pin) to indicate a particular location.
 */
public class MapsMarkerActivity extends AppCompatActivity
        implements OnMapReadyCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps);

        // Get the SupportMapFragment and request notification when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /**
     * Manipulates the map when it's available.
     * The API invokes this callback when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user receives a prompt to install
     * Play services inside the SupportMapFragment. The API invokes this method after the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        // Add a marker in Sydney, Australia,
        // and move the map's camera to the same location.
        LatLng sydney = new LatLng(-33.852, 151.211);
        googleMap.addMarker(new MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney"));
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

    

কার্যকলাপের কোটলিন সংস্করণ দেখুন:

    // Copyright 2020 Google LLC
//
// 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.

package com.example.mapwithmarker

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

/**
 * An activity that displays a Google map with a marker (pin) to indicate a particular location.
 */
class MapsMarkerActivity : AppCompatActivity(), OnMapReadyCallback {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps)

        // Get the SupportMapFragment and request notification when the map is ready to be used.
        val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as? SupportMapFragment
        mapFragment?.getMapAsync(this)
    }

    override fun onMapReady(googleMap: GoogleMap) {
      val sydney = LatLng(-33.852, 151.211)
      googleMap.addMarker(
        MarkerOptions()
          .position(sydney)
          .title("Marker in Sydney")
      )
      googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}

    

আপনার উন্নয়ন প্রকল্প সেট আপ করুন

অ্যান্ড্রয়েড স্টুডিওতে টিউটোরিয়াল প্রকল্প তৈরি করতে এই পদক্ষেপগুলি অনুসরণ করুন।

  1. অ্যান্ড্রয়েড স্টুডিও ডাউনলোড এবং ইনস্টল করুন
  2. অ্যান্ড্রয়েড স্টুডিওতে Google Play পরিষেবা প্যাকেজ যোগ করুন
  3. আপনি এই টিউটোরিয়ালটি পড়া শুরু করার সময় যদি আপনি এটি না করেন তবে Google Maps Android API v2 স্যাম্পল রিপোজিটরি ক্লোন করুন বা ডাউনলোড করুন
  4. টিউটোরিয়াল প্রকল্প আমদানি করুন:

    • অ্যান্ড্রয়েড স্টুডিওতে, ফাইল > নতুন > আমদানি প্রকল্প নির্বাচন করুন।
    • ডাউনলোড করার পরে আপনি যেখানে Google Maps Android API v2 স্যাম্পল রিপোজিটরি সংরক্ষণ করেছেন সেখানে যান৷
    • এই অবস্থানে MapWithMarker প্রকল্প খুঁজুন:
      PATH-TO-SAVED-REPO /android-samples/tutorials/java/MapWithMarker (জাভা) অথবা
      PATH-TO-SAVED-REPO /android-samples/tutorials/kotlin/MapWithMarker (Kotlin)
    • প্রকল্প ডিরেক্টরি নির্বাচন করুন, তারপর খুলুন ক্লিক করুন। অ্যান্ড্রয়েড স্টুডিও এখন গ্রেডল বিল্ড টুল ব্যবহার করে আপনার প্রোজেক্ট তৈরি করে।

প্রয়োজনীয় API সক্রিয় করুন এবং একটি API কী পান

এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনার প্রয়োজনীয় API গুলি সক্ষম সহ একটি Google ক্লাউড প্রকল্প এবং Android এর জন্য মানচিত্র SDK ব্যবহার করার জন্য অনুমোদিত একটি API কী প্রয়োজন৷ আরো বিস্তারিত জানার জন্য, দেখুন:

আপনার অ্যাপে API কী যোগ করুন

  1. আপনার প্রকল্পের local.properties ফাইল খুলুন।
  2. নিম্নলিখিত স্ট্রিং যোগ করুন এবং তারপর আপনার API কী এর মান দিয়ে YOUR_API_KEY প্রতিস্থাপন করুন:

    MAPS_API_KEY=YOUR_API_KEY
    

    আপনি যখন আপনার অ্যাপটি তৈরি করবেন, তখন Android এর জন্য Secrets Gradle Plugin API কী অনুলিপি করবে এবং এটিকে Android ম্যানিফেস্টে একটি বিল্ড ভেরিয়েবল হিসাবে উপলব্ধ করবে, যেমনটি নীচে ব্যাখ্যা করা হয়েছে।

আপনার অ্যাপ তৈরি করুন এবং চালান

অ্যাপটি তৈরি এবং চালানোর জন্য:

  1. আপনার কম্পিউটারে একটি অ্যান্ড্রয়েড ডিভাইস সংযুক্ত করুন। আপনার Android ডিভাইসে বিকাশকারী বিকল্পগুলি সক্ষম করতে নির্দেশাবলী অনুসরণ করুন এবং ডিভাইসটি সনাক্ত করতে আপনার সিস্টেম কনফিগার করুন৷

    বিকল্পভাবে, আপনি একটি ভার্চুয়াল ডিভাইস কনফিগার করতে Android ভার্চুয়াল ডিভাইস (AVD) ম্যানেজার ব্যবহার করতে পারেন। একটি এমুলেটর নির্বাচন করার সময়, নিশ্চিত করুন যে আপনি এমন একটি ছবি বাছাই করেছেন যাতে Google API গুলি অন্তর্ভুক্ত থাকে৷ আরও বিশদ বিবরণের জন্য, একটি অ্যান্ড্রয়েড স্টুডিও প্রকল্প সেট আপ করুন দেখুন।

  2. অ্যান্ড্রয়েড স্টুডিওতে, রান মেনু বিকল্পে ক্লিক করুন (বা প্লে বোতাম আইকন)। অনুরোধ হিসাবে একটি ডিভাইস চয়ন করুন.

অ্যান্ড্রয়েড স্টুডিও গ্রেডলকে অ্যাপটি তৈরি করতে আহ্বান জানায় এবং তারপরে ডিভাইসে বা এমুলেটরে অ্যাপটি চালায়। আপনি অস্ট্রেলিয়ার পূর্ব উপকূলে সিডনিতে নির্দেশিত মার্কার সহ একটি মানচিত্র দেখতে পাবেন, এই পৃষ্ঠার চিত্রের মতো।

সমস্যা সমাধান:

কোড বুঝুন

টিউটোরিয়ালের এই অংশটি MapWithMarker অ্যাপের সবচেয়ে গুরুত্বপূর্ণ অংশগুলি ব্যাখ্যা করে, যাতে আপনি কীভাবে অনুরূপ অ্যাপ তৈরি করবেন তা বুঝতে সাহায্য করতে পারেন।

আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট চেক করুন

আপনার অ্যাপের AndroidManifest.xml ফাইলে নিম্নলিখিত উপাদানগুলি নোট করুন:

  • অ্যাপটির সাথে সংকলিত Google Play পরিষেবাগুলির সংস্করণটি এম্বেড করতে একটি meta-data উপাদান যুক্ত করুন৷

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    
  • আপনার API কী নির্দিষ্ট করে একটি meta-data উপাদান যোগ করুন। এই টিউটোরিয়ালের সাথে থাকা নমুনাটি আপনার পূর্বে সংজ্ঞায়িত কীটির নামের সাথে মিলে একটি বিল্ড ভেরিয়েবলে API কী-এর মান ম্যাপ করে, MAPS_API_KEY । আপনি যখন আপনার অ্যাপটি তৈরি করবেন, তখন Android এর জন্য সিক্রেটস গ্রেডল প্লাগইন আপনার local.properties ফাইলের কীগুলিকে ম্যানিফেস্ট বিল্ড ভেরিয়েবল হিসাবে উপলব্ধ করবে৷

    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="${MAPS_API_KEY}" />
    

    আপনার build.gradle ফাইলে, নিম্নলিখিত লাইনটি আপনার Android ম্যানিফেস্টে আপনার API কী পাস করে।

      id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    

নীচে একটি সম্পূর্ণ ম্যানিফেস্টের একটি উদাহরণ:

<?xml version="1.0" encoding="utf-8"?>
<!--
 Copyright 2020 Google LLC

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <!--
             The API key for Google Maps-based APIs.
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="${MAPS_API_KEY}" />

        <activity
            android:name=".MapsMarkerActivity"
            android:label="@string/title_activity_maps"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

একটি মানচিত্র যোগ করুন

Android এর জন্য মানচিত্র SDK ব্যবহার করে একটি মানচিত্র প্রদর্শন করুন৷

  1. আপনার কার্যকলাপের লেআউট ফাইল, activity_maps.xml এ একটি <fragment> উপাদান যোগ করুন। এই উপাদানটি মানচিত্রের জন্য একটি ধারক হিসাবে কাজ করতে এবং GoogleMap অবজেক্টে অ্যাক্সেস প্রদান করার জন্য একটি SupportMapFragment সংজ্ঞায়িত করে। টিউটোরিয়ালটি অ্যান্ড্রয়েড ফ্রেমওয়ার্কের পূর্ববর্তী সংস্করণগুলির সাথে পিছিয়ে থাকা সামঞ্জস্য নিশ্চিত করতে মানচিত্রের খণ্ডটির অ্যান্ড্রয়েড সমর্থন লাইব্রেরি সংস্করণ ব্যবহার করে।

    <!--
     Copyright 2020 Google LLC
    
     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.
    -->
    
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.mapwithmarker.MapsMarkerActivity" />
    
    
  2. আপনার কার্যকলাপের onCreate() পদ্ধতিতে, লেআউট ফাইলটিকে বিষয়বস্তু ভিউ হিসাবে সেট করুন। FragmentManager.findFragmentById() কল করে মানচিত্র খণ্ডের একটি হ্যান্ডেল পান। তারপর মানচিত্র কলব্যাকের জন্য নিবন্ধন করতে getMapAsync() ব্যবহার করুন:

    জাভা

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps);
    
        // Get the SupportMapFragment and request notification when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    

    কোটলিন

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps)
    
        // Get the SupportMapFragment and request notification when the map is ready to be used.
        val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as? SupportMapFragment
        mapFragment?.getMapAsync(this)
    }
    
  3. OnMapReadyCallback ইন্টারফেসটি প্রয়োগ করুন এবং onMapReady() পদ্ধতিটি ওভাররাইড করুন, যখন GoogleMap অবজেক্ট উপলব্ধ থাকে তখন মানচিত্র সেট আপ করতে:

    জাভা

    public class MapsMarkerActivity extends AppCompatActivity
            implements OnMapReadyCallback {
    
        // ...
    
        @Override
        public void onMapReady(GoogleMap googleMap) {
            LatLng sydney = new LatLng(-33.852, 151.211);
            googleMap.addMarker(new MarkerOptions()
                .position(sydney)
                .title("Marker in Sydney"));
        }
    }
    

    কোটলিন

    class MapsMarkerActivity : AppCompatActivity(), OnMapReadyCallback {
    
        // ...
    
        override fun onMapReady(googleMap: GoogleMap) {
          val sydney = LatLng(-33.852, 151.211)
          googleMap.addMarker(
            MarkerOptions()
              .position(sydney)
              .title("Marker in Sydney")
          )
        }
    }
    

ডিফল্টরূপে, Android এর জন্য Maps SDK তথ্য উইন্ডোর বিষয়বস্তু প্রদর্শন করে যখন ব্যবহারকারী একটি মার্কারে ট্যাপ করে। আপনি যদি ডিফল্ট আচরণ ব্যবহার করতে খুশি হন তবে মার্কারটির জন্য একটি ক্লিক লিসেনার যোগ করার দরকার নেই।

পরবর্তী পদক্ষেপ

ম্যাপ অবজেক্ট সম্পর্কে আরও জানুন এবং আপনি মার্কার দিয়ে কি করতে পারেন।