افزودن نشانگر – B4A

Android SDK Resources

نسخه 1.1

در این آموزش هدف ما اضافه کردن یک نشانگر توسط فشردن کلید افزودن نشانگر است.

برای پیاده سازی این مثال باید کتابخانه های زیر را در پنجره Libraries Manager تیک بزنید:

  • Reflection

سپس در فایل Main پروژه در قسمت Region Project Attributes خط زیر را اضافه کنید:

#AdditionalJar: common-release.aar

activity_add_marker.bal

در Visual designer زیر که مربوط به Layout اکتیویتی افزودن نشانگر است، یک View ی نقشه و یک دکمه که با فشردن آن یک مارکر به نقشه اضافه میشود، اضافه شده است.

جهت تعریف شیء نقشه در کد روی View ی مربوط به نقشه که نام آن در این مثال NeshanMapSdk1 است راست کلیک کرده و از منوی باز شونده Generate، گزینه Dim NeshanMapSdk1 as NeshanMapSdk را انتخاب میکنیم. پس از این عمل، شیء نقشه در فایل کد مربوط به اکتیویتی افزودن مارکر (AddMarkerActivity) در قسمت Globals اضافه میشود.

            Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.

	Private NeshanMapSdk1 As NeshanMapSdk
End Sub
        

جهت پیاده سازی متد کلیک روی دکمه، Visual designer مربوط به AddMarkerActivity را باز کرده، روی دکمه ای که قبلا اضافه شده است راست کلیک کنید و از زیر منوی Generate گزینه Click را انتخاب کنید تا Event کلیک مربوط به دکمه در AddMarkerActivity پیاده سازی شود. سپس تکه کد مربوط به اضافه کردن نشانگر را درون بدنه آن اضافه کنید.

            Private Sub AddMarkerButton_Click

End Sub
        

افزودن نشانگر به نقشه

جهت افزودن یک مارکر به نقشه میتوانید از متد addMarker روی شیء نقشه به صورت زیر استفاده نمایید:

            NeshanMapSdk1.addMarker(markerDrawable,size,lat,lng)
        

پارامترهای مربوط به متد addMarker:

drawable: آیکن مربوط به نشانگر (که از فولدر drawable خوانده میشود)

size: اندازه نشانگر

lat: عرض جغرافیایی

lng: طول جغرافیایی

جهت جایگذاری عکس نشانگر خود، آن را در آدرس زیر کپی کنید:

Project folder/Objects/res/drawable

سپس روی عکس راست کلیک کرده و گزینه Properties را انتخب کنید. در پنجره باز شده در قسمت Attributes تیک Read-only را بزنید و سپس دکمه Ok را فشار دهید.

مثال

            Private Sub AddMarkerButton_Click
	Dim reflector As Reflector
	Dim package As String = reflector.GetStaticField("anywheresoftware.b4a.BA", "packageName")
	Dim markerDrawable As Int = reflector.GetStaticField(package & ".R$drawable", "icon")
	NeshanMapSdk1.addMarker(markerDrawable,20,35.69997, 51.37800)
End Sub
        

در مثال بالا محتوای متغیر package که از نوع String است Package name مربوط به اپلیکیشن می باشد. جهت بدست آوردن Package name باید از یک متغیر از نوع Reflector به صورت بالا استفاده کرد.

متغیر markerDrawable از نوع Int است و حاوی آی دی عکسی است که داخل پوشه drawable کپی کرده اید. در اینجا نام آیکن، icon است که به صورت بالا توسط متغیر reflector از پوشه drawable خوانده میشود.

در پایان با استفاده از متد addMarker پارامترهای ورودی را ارسال کرده و مارکر را به صورت بالا روی نقشه ایجاد کنید.

Info Window

Info window یک پنجره برای نمایش اطلاعات مربوط به یک نشانگر است. Info window قابلیت نمایش عنوان و توضیحات را داراست. خروجی متد addMarker یک متغیر از نوع JavaObject است که یک شیء نشانگر از نوع جاوا درون آن قرار دارد.

برای ست کردن عنوان و توضیحات مربوط به یک نشانگر میتوانید از دستور زیر استفاده نمایید.

            Dim marker As JavaObject = NeshanMapSdk1.addMarker(markerDrawable,markerSize,latitude, longitude)
marker.RunMethodJO("setTitle",Array("عنوان مورد نظر برای نشانگر")).RunMethodJO("setDescription",Array("توضیحات مورد نظر برای نشانگر"))
NeshanMapSdk1.showMarkerInfoWindow(marker)
        

قطعه کد بالا پس از افزودن یک نشانگر روی نقشه، شیء جاوایی آن را که از نوع JavaObject است درون متغیری به نام marker میریزد. سپس برای ست کردن عنوان از متد جاوایی setTitle و برای ست کردن توضیحات از متد جاوایی setDescription استفاده میکند.

نکته: جهت صدا زدن متد جاوایی یک شیء JavaObject میتوانید از 2 متد RunMethod و RunMethodJO استفاده نمایید.

در پایان برای نمایش Info window ی مربوط به مارکر افزوده شده، متد showMarkerInfoWindow را روی شیء نقشه صدا میزند و شی جاوایی نشانگر را که در قطعه کد بالا marker نام دارد به عنوان پارامتر به آن میدهد.

نسخه 1.0

در این آموزش هدف ما اضافه کردن یک نشانگر توسط فشردن کلید افزودن نشانگر است.

برای پیاده سازی این مثال باید کتابخانه های زیر را در پنجره Libraries Manager تیک بزنید:

  • Reflection

سپس در فایل Main پروژه در قسمت Region Project Attributes خط زیر را اضافه کنید:

#AdditionalJar: common-release.aar

activity_add_marker.bal

در Visual designer زیر که مربوط به Layout اکتیویتی افزودن نشانگر است، یک View ی نقشه و یک دکمه که با فشردن آن یک مارکر به نقشه اضافه میشود، اضافه شده است.

جهت تعریف شیء نقشه در کد روی View ی مربوط به نقشه که نام آن در این مثال NeshanMapSdk1 است راست کلیک کرده و از منوی باز شونده Generate، گزینه Dim NeshanMapSdk1 as NeshanMapSdk را انتخاب میکنیم. پس از این عمل، شیء نقشه در فایل کد مربوط به اکتیویتی افزودن مارکر (AddMarkerActivity) در قسمت Globals اضافه میشود.

            Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.

	Private NeshanMapSdk1 As NeshanMapSdk
End Sub
        

جهت پیاده سازی متد کلیک روی دکمه، Visual designer مربوط به AddMarkerActivity را باز کرده، روی دکمه ای که قبلا اضافه شده است راست کلیک کنید و از زیر منوی Generate گزینه Click را انتخاب کنید تا Event کلیک مربوط به دکمه در AddMarkerActivity پیاده سازی شود. سپس تکه کد مربوط به اضافه کردن نشانگر را درون بدنه آن اضافه کنید.

            Private Sub AddMarkerButton_Click

End Sub
        

افزودن نشانگر به نقشه

جهت افزودن یک مارکر به نقشه میتوانید از متد addMarker روی شیء نقشه به صورت زیر استفاده نمایید:

            NeshanMapSdk1.addMarker(markerDrawable,size,lat,lng)
        

پارامترهای مربوط به متد addMarker:

drawable: آیکن مربوط به نشانگر (که از فولدر drawable خوانده میشود)

size: اندازه نشانگر

lat: عرض جغرافیایی

lng: طول جغرافیایی

جهت جایگذاری عکس نشانگر خود، آن را در آدرس زیر کپی کنید:

Project folder/Objects/res/drawable

سپس روی عکس راست کلیک کرده و گزینه Properties را انتخب کنید. در پنجره باز شده در قسمت Attributes تیک Read-only را بزنید و سپس دکمه Ok را فشار دهید.

مثال

            Private Sub AddMarkerButton_Click
	Dim reflector As Reflector
	Dim package As String = reflector.GetStaticField("anywheresoftware.b4a.BA", "packageName")
	Dim markerDrawable As Int = reflector.GetStaticField(package & ".R$drawable", "icon")
	NeshanMapSdk1.addMarker(markerDrawable,20,35.69997, 51.37800)
End Sub
        

در مثال بالا محتوای متغیر package که از نوع String است Package name مربوط به اپلیکیشن می باشد. جهت بدست آوردن Package name باید از یک متغیر از نوع Reflector به صورت بالا استفاده کرد.

متغیر markerDrawable از نوع Int است و حاوی آی دی عکسی است که داخل پوشه drawable کپی کرده اید. در اینجا نام آیکن، icon است که به صورت بالا توسط متغیر reflector از پوشه drawable خوانده میشود.

در پایان با استفاده از متد addMarker پارامترهای ورودی را ارسال کرده و مارکر را به صورت بالا روی نقشه ایجاد کنید.

Info Window

Info window یک پنجره برای نمایش اطلاعات مربوط به یک نشانگر است. Info window قابلیت نمایش عنوان و توضیحات را داراست. خروجی متد addMarker یک متغیر از نوع JavaObject است که یک شیء نشانگر از نوع جاوا درون آن قرار دارد.

برای ست کردن عنوان و توضیحات مربوط به یک نشانگر میتوانید از دستور زیر استفاده نمایید.

            Dim marker As JavaObject = NeshanMapSdk1.addMarker(markerDrawable,markerSize,latitude, longitude)
marker.RunMethodJO("setTitle",Array("عنوان مورد نظر برای نشانگر")).RunMethodJO("setDescription",Array("توضیحات مورد نظر برای نشانگر"))
NeshanMapSdk1.showMarkerInfoWindow(marker)
        

قطعه کد بالا پس از افزودن یک نشانگر روی نقشه، شیء جاوایی آن را که از نوع JavaObject است درون متغیری به نام marker میریزد. سپس برای ست کردن عنوان از متد جاوایی setTitle و برای ست کردن توضیحات از متد جاوایی setDescription استفاده میکند.

نکته: جهت صدا زدن متد جاوایی یک شیء JavaObject میتوانید از 2 متد RunMethod و RunMethodJO استفاده نمایید.

در پایان برای نمایش Info window ی مربوط به مارکر افزوده شده، متد showMarkerInfoWindow را روی شیء نقشه صدا میزند و شی جاوایی نشانگر را که در قطعه کد بالا marker نام دارد به عنوان پارامتر به آن میدهد.