اضافه کردن برچسب

مستندات جامع اندروید

نسخه 1.0.3

در این آموزش نحوه اضافه کردن یک برچسب با متن دلخواه به یک موقعیت جغرافیایی از نقشه توضیح داده خواهد شد.

فهرست مطالب این صفحه

activity_add_label.xml:

فایل لی‌اوت این بخش صرفا شامل یک نقشه از کلاس org.neshan.ui.MapView است.

            <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="activity.AddLabel">

    <org.neshan.mapsdk.MapView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/map"/>
</android.support.constraint.ConstraintLayout>
        

AddLabel.java:

به جز متد addLabel تمامی بخش‌های دیگر این کلاس مشابه با کلاس addMarker است و در صورت نیاز می‌توانید از این بخش-اضافه-کردن-نشانگر) اطلاعات مربوط به بقیه بخش‌های کد را مطالعه کنید.

اگر شی label دارای مقدار است، به این معنی می باشد که قبلا یک متن به نقشه اضافه شده. ابتدا با دستور removeLabel این برچسب را از روی نقشه حذف می کنیم.

یک شی از کلاس TextStyleBuilder ساخته شده و با استفاده از متدهای setter ویژگی‌های مختلفی از جمله اندازه فونت، رنگ پس‌زمینه و … بر روی آن تنظیم می‌شود و در نهایت با صدا زدن متد buildStyle بر روی آن، شی ای از کلاس TextStyle برگردانده می‌شود.

شی‌ای از کلاس Label ایجاد شده و به عنوان آرگومان‌های ورودی، به ترتیب، به آن موقعیت جغرافیایی‌ای که برچسب در آن‌جا نشان داده شود، استایل ساخته شده و متنی که باید بر روی برچسب نشان داده شود داده می‌شود.

با صدا زدن متد addLabel بر روی map، برچسب ساخته شده بر روی نقشه نشان داده می‌شود.

            // This method gets a LngLat as input and adds a label on that position
    private void addLabel(LatLng loc){
        if(label!=null){
            map.removeLabel(label);
        }
        // Creating text style. We should use an object of type TextStyleBuilder, set all features on it
        // and then call buildStyle method on it. This method returns an object of type TextStyle.
        TextStyleBuilder textStyleBuilder = new TextStyleBuilder();
        textStyleBuilder.setFontSize(15f);
        textStyleBuilder.setColor(new Color((short)255, (short)150, (short)150, (short)255));
        TextStyle textStyle = textStyleBuilder.buildStyle();

        // Creating label
        label = new Label(loc, textStyle, "مکان انتخاب شده");

        // Adding marker to labelLayer, or showing label on map!
        map.addLabel(label);
    }
        

نکته:

اولویت نمایش نشانگر (مارکر) نسبت به برچسب بیشتر است. در صورتی که نشانگری وارد محدوده برچسب شود، برچسب نمایش داده نخواهد شد. در صورتی که میخواهید برچسب در هر صورتی نمایش داده شود میتوانید از متد زیر روی شی TextStyleBuilder استفاده کنید:

            textStyleBuilder.setHideIfOverlapped(false);