Android SDK Resources
Android SDK Resources
نسخه 1.1
هدف این لایه، دریافت نقاطی از پایگاه داده و نمایش یک نشانگر به ازای هر کدام از آنها بر روی نقشه است.
فهرست مطالب این صفحه
سپس در فایل Main پروژه در قسمت Region Project Attributes خط زیر را اضافه کنید:
#AdditionalJar: common-release.aar
در پنجره Files Manager دکمه Add Files را کلیک کنید و فایل دیتابیس database.sqlite را به فایل های پروژه اضافه نمایید.
جهت پیاده سازی این مثال، باید کتابخانه های زیر را در پنجره Libraries Manager تیک بزنید:
- SQL (جهت ارتباط با دیتابیس)
- Reflection (جهت بدست آوردن Package name مربوط به اپلیکیشن)
activity_database_layer.bal
جهت تعریف شیء نقشه در کد روی View ی مربوط به نقشه که نام آن در این مثال NeshanMapSdk1 است راست کلیک کرده و از منوی باز شونده Generate، گزینه Dim NeshanMapSdk1 as NeshanMapSdk را انتخاب میکنیم. پس از این عمل، شیء نقشه در فایل کد مربوط به اکتیویتی لایه دیتابیس (DatabaseLayerActivity) در قسمت 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
جهت ایجاد Event مربوط به ToggleButton، به Visual Designer مربوط به اکتیویتی DatabaseLayerActivity رفته و روی ToggleButton راست کلیک کنید و از منوی باز شونده Generate گزینه CheckedChange را انتخاب کنید تا Event مربوط به تغییر مقدار ToggleButton به اکتیویتی اضافه شود.
Private Sub ToggleDatabaseLayerButton_CheckedChange(Checked As Boolean)
End Sub
خواندن نقاط از دیتابیس و نمایش روی نقشه
جهت ارتباط با دیتابیس فایل database.sqlite را در فولدر DirInternal از فولدر DirAssets توسط قطعه کد زیر کپی کنید. قطعه کد زیر مربوط به Toggle button است که در صورتی که دکمه در حالت روشن باشد، چک میشود که آیا در فولدر DirInternal دیتابیس وجود دارد یا خیر، در صورتی که وجود نداشت، آن را از فولدر DirAssets درون DirInternal کپی میکند. در غیر اینصورت اگر دکمه در حالت خاموش باشد، با دستور clearMarkers که روی شیء NeshanMapSdk صدا زده میشود، مارکرهای از قبل اضافه شده روی نقشه را حذف میکند.
Private Sub ToggleDatabaseLayerButton_CheckedChange(Checked As Boolean)
If Checked Then
If File.Exists(File.DirInternal, "database.sqlite") = False Then
File.Copy(File.DirAssets, "database.sqlite", File.DirInternal, "database.sqlite")
End If
ReadDataBase
Else
NeshanMapSdk1.clearMarkers
End If
End Sub
درون database ی که در فولدر assets وجود دارد یک جدول به نام points قرار دارد. قطعه کد زیر پس از ارتباط با دیتابیس و خواندن نقاط از جدول points، توسط یک حلقه Do While نقاط استخراج شده را پیمایش میکند و به ازای هر نقطه یک نشانگر به نقشه اضافه میکند.
خروجی حاصل از Query اجرا شده روی دیتابیس داخل متغیری به نام ResultSet1 از نوع ResultSet ریخته میشود.توسط متد NextRow که روی شیء ResultSet1 صدا زده میشود، میتوان رکوردهای استخراج شده از جدول points را توسط یک حلقه استخراج کرد.
Private Sub ReadDataBase
Dim reflector As Reflector
Dim sql As SQL
Dim ResultSet1 As ResultSet
sql.Initialize(File.DirInternal,"database.sqlite",False)
ResultSet1 = sql.ExecQuery("SELECT * FROM 'points'")
Dim package As String= reflector.GetStaticField("anywheresoftware.b4a.BA", "packageName")
Private markerDrawable As Int = reflector.GetStaticField(package & ".R$drawable", "icon")
Do While ResultSet1.NextRow
NeshanMapSdk1.addMarker(markerDrawable,25,ResultSet1.GetDouble("lat"),ResultSet1.GetDouble("lng"))
Loop
ResultSet1.Close
NeshanMapSdk1.setCameraZoom(12,0.5)
End Sub
نسخه 1.0
هدف این لایه، دریافت نقاطی از پایگاه داده و نمایش یک نشانگر به ازای هر کدام از آنها بر روی نقشه است.
سپس در فایل Main پروژه در قسمت Region Project Attributes خط زیر را اضافه کنید:
#AdditionalJar: common-release.aar
در پنجره Files Manager دکمه Add Files را کلیک کنید و فایل دیتابیس database.sqlite را به فایل های پروژه اضافه نمایید.
جهت پیاده سازی این مثال، باید کتابخانه های زیر را در پنجره Libraries Manager تیک بزنید:
- SQL (جهت ارتباط با دیتابیس)
- Reflection (جهت بدست آوردن Package name مربوط به اپلیکیشن)
activity_database_layer.bal
جهت تعریف شیء نقشه در کد روی View ی مربوط به نقشه که نام آن در این مثال NeshanMapSdk1 است راست کلیک کرده و از منوی باز شونده Generate، گزینه Dim NeshanMapSdk1 as NeshanMapSdk را انتخاب میکنیم. پس از این عمل، شیء نقشه در فایل کد مربوط به اکتیویتی لایه دیتابیس (DatabaseLayerActivity) در قسمت 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
جهت ایجاد Event مربوط به ToggleButton، به Visual Designer مربوط به اکتیویتی DatabaseLayerActivity رفته و روی ToggleButton راست کلیک کنید و از منوی باز شونده Generate گزینه CheckedChange را انتخاب کنید تا Event مربوط به تغییر مقدار ToggleButton به اکتیویتی اضافه شود.
Private Sub ToggleDatabaseLayerButton_CheckedChange(Checked As Boolean)
End Sub
خواندن نقاط از دیتابیس و نمایش روی نقشه
جهت ارتباط با دیتابیس فایل database.sqlite را در فولدر DirInternal از فولدر DirAssets توسط قطعه کد زیر کپی کنید. قطعه کد زیر مربوط به Toggle button است که در صورتی که دکمه در حالت روشن باشد، چک میشود که آیا در فولدر DirInternal دیتابیس وجود دارد یا خیر، در صورتی که وجود نداشت، آن را از فولدر DirAssets درون DirInternal کپی میکند. در غیر اینصورت اگر دکمه در حالت خاموش باشد، با دستور clearMarkers که روی شیء NeshanMapSdk صدا زده میشود، مارکرهای از قبل اضافه شده روی نقشه را حذف میکند.
Private Sub ToggleDatabaseLayerButton_CheckedChange(Checked As Boolean)
If Checked Then
If File.Exists(File.DirInternal, "database.sqlite") = False Then
File.Copy(File.DirAssets, "database.sqlite", File.DirInternal, "database.sqlite")
End If
ReadDataBase
Else
NeshanMapSdk1.clearMarkers
End If
End Sub
درون database ی که در فولدر assets وجود دارد یک جدول به نام points قرار دارد. قطعه کد زیر پس از ارتباط با دیتابیس و خواندن نقاط از جدول points، توسط یک حلقه Do While نقاط استخراج شده را پیمایش میکند و به ازای هر نقطه یک نشانگر به نقشه اضافه میکند.
خروجی حاصل از Query اجرا شده روی دیتابیس داخل متغیری به نام ResultSet1 از نوع ResultSet ریخته میشود.توسط متد NextRow که روی شیء ResultSet1 صدا زده میشود، میتوان رکوردهای استخراج شده از جدول points را توسط یک حلقه استخراج کرد.
Private Sub ReadDataBase
Dim reflector As Reflector
Dim sql As SQL
Dim ResultSet1 As ResultSet
sql.Initialize(File.DirInternal,"database.sqlite",False)
ResultSet1 = sql.ExecQuery("SELECT * FROM 'points'")
Dim package As String= reflector.GetStaticField("anywheresoftware.b4a.BA", "packageName")
Private markerDrawable As Int = reflector.GetStaticField(package & ".R$drawable", "icon")
Do While ResultSet1.NextRow
NeshanMapSdk1.addMarker(markerDrawable,25,ResultSet1.GetDouble("lat"),ResultSet1.GetDouble("lng"))
Loop
ResultSet1.Close
NeshanMapSdk1.setCameraZoom(12,0.5)
End Sub