Android SDK Resources
Android SDK Resources
نسخه 1.1
- OkHttpUtils2 (جهت دانلود فایل Json مربوط به نقاط)
- JSON (جهت خواندن محتویات Json)
- Reflection (جهت بدست آوردن Package name اپلیکیشن)
سپس در فایل Main پروژه در قسمت Region Project Attributes خط زیر را اضافه کنید:
فهرست مطالب این صفحه
#AdditionalJar: common-release.aar
"type": "FeatureCollection",
"name": "points",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.368444458834389, 35.722048959450113 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.384140003141582, 35.778596997768005 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.456522296148684, 35.663707775556659 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.373137257878632, 35.656614228822541 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.527715399382672, 35.737503116119001 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.25037627592824, 35.74785430829283 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.297536031713946, 35.676263156219797 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.461240697178525, 35.725292478576648 ] } }
]
}
جهت تعریف شیء نقشه در کد روی View ی مربوط به نقشه که نام آن در این مثال NeshanMapSdk1 است راست کلیک کرده و از منوی باز شونده Generate، گزینه Dim NeshanMapSdk1 as NeshanMapSdk را انتخاب میکنیم. پس از این عمل، شیء نقشه در فایل کد مربوط به اکتیویتی لایه آنلاین (OnlineLayerActivity) در قسمت 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 مربوط به OnlineLayerActivity را باز کرده، روی دکمه ای که قبلا اضافه شده است راست کلیک کنید و از زیر منوی Generate گزینه Click را انتخاب کنید تا Event کلیک مربوط به دکمه در OnlineLayerActivity پیاده سازی شود.
Private Sub OnlineLayerButton_Click
End Sub
دانلود فایل JSON نقاط
جهت دانلود فایل JSON مربوط به نقاط، یک شیء از نوع HttpJob در قسمت Globals تعریف کرده و از آن به صورت زیر استفاده نمایید. (در این مثال پس از کلیک روی دکمه OnlineLayerButton کد مربوط به دانلود فایل JSON صدا زده میشود.
Private Sub OnlineLayerButton_Click
httpJob.Initialize("",Me)
httpJob.Download("https://api.neshan.org/points.geojson")
End Sub
نتیجه ارسال درخواست در متدی به نام JobDone بازگردانده میشود که یک شیء از نوع HttpJob است. در ادامه نحوه دریافت فایل JSON را از طریق متد JobDone شرح خواهیم داد.
Sub JobDone(job As HttpJob)
If job.Success Then
Private out As OutputStream = File.OpenOutput(File.DirInternalCache,"points.geojson",False)
File.Copy2(job.GetInputStream,out)
out.Close
getAndShowPoints
Else
Log("Error:" & job.ErrorMessage)
End If
job.Release
End Sub
در قطعه کد بالا متغیر job محتوی پاسخ درخواست نقاط JSON است. ابتدا یک فایل به نام points.geojson در InternalCache ساخته میشود. سپس محتوای پاسخ در فایل ساخته شده ذخیره میشود. و در نهایت متد getAndShowPoints صدا زده میشود که در این متد محتوای فایل ذخیره شده خوانده میشود و نقاط استخراج شده به صورت نشانگر (مارکر) روی نقشه نمایش داده میشود.
Sub getAndShowPoints
If File.Exists(File.DirInternalCache,"points.geojson") Then
Private jsonParser As JSONParser
Private list1 As List
Private map As Map
jsonParser.Initialize(File.ReadString(File.DirInternalCache,"points.geojson"))
map = jsonParser.NextObject
list1 = map.Get("features")
package = reflector.GetStaticField("anywheresoftware.b4a.BA", "packageName")
Private markerDrawable As Int = reflector.GetStaticField(package & ".R$drawable", "icon")
Private map2 As Map
For Each feature As Map In list1
map2 = feature.Get("geometry")
Dim coordinateList As List
coordinateList = map2.Get("coordinates")
NeshanMapSdk1.addMarker(markerDrawable,25,coordinateList.Get(1),coordinateList.Get(0))
Next
NeshanMapSdk1.setCameraZoom(12,0.5)
End If
End Sub
در قطعه کد بالا، متغیر jsonParser فایل JSON ذخیره شده را در متد Initialize خود در قالب String دریافت میکند، پس از دریافت توسط متد NextObject مقادیر فایل JSON را استخراج کرده و در متغیری به نام map میریزد. متغیر map از نوع Map که نوعی key/value است میباشد. کلیدهای map فیلدهای JSON و VALUE های آن، مقادیر فیلدها میباشد.
توسط دستور Get میتوان مقادیر مربوط به فیلدها را از map استخراج کرد. خط map.Get(“features”) مقادیر مربوط به فیلد features را برمیگرداند که لیستی از feature هاست، درون feature فیلدی به نام geometry وجود دارد که مختصات نقاط درون آن جای دارد. قطعه کد بالا، توسط یک حلقه For نقاط را استخراج کرده و توسط متد addMarker که روی شیء نقشه صدا زده میشود، نشانگرهای مربوط به نقاط را روی نقشه اضافه میکند.
نسخه 1.0
- OkHttpUtils2 (جهت دانلود فایل Json مربوط به نقاط)
- JSON (جهت خواندن محتویات Json)
- Reflection (جهت بدست آوردن Package name اپلیکیشن)
سپس در فایل Main پروژه در قسمت Region Project Attributes خط زیر را اضافه کنید:
#AdditionalJar: common-release.aar
"type": "FeatureCollection",
"name": "points",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.368444458834389, 35.722048959450113 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.384140003141582, 35.778596997768005 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.456522296148684, 35.663707775556659 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.373137257878632, 35.656614228822541 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.527715399382672, 35.737503116119001 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.25037627592824, 35.74785430829283 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.297536031713946, 35.676263156219797 ] } },
{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 51.461240697178525, 35.725292478576648 ] } }
]
}
جهت تعریف شیء نقشه در کد روی View ی مربوط به نقشه که نام آن در این مثال NeshanMapSdk1 است راست کلیک کرده و از منوی باز شونده Generate، گزینه Dim NeshanMapSdk1 as NeshanMapSdk را انتخاب میکنیم. پس از این عمل، شیء نقشه در فایل کد مربوط به اکتیویتی لایه آنلاین (OnlineLayerActivity) در قسمت 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 مربوط به OnlineLayerActivity را باز کرده، روی دکمه ای که قبلا اضافه شده است راست کلیک کنید و از زیر منوی Generate گزینه Click را انتخاب کنید تا Event کلیک مربوط به دکمه در OnlineLayerActivity پیاده سازی شود.
Private Sub OnlineLayerButton_Click
End Sub
دانلود فایل JSON نقاط
جهت دانلود فایل JSON مربوط به نقاط، یک شیء از نوع HttpJob در قسمت Globals تعریف کرده و از آن به صورت زیر استفاده نمایید. (در این مثال پس از کلیک روی دکمه OnlineLayerButton کد مربوط به دانلود فایل JSON صدا زده میشود.
Private Sub OnlineLayerButton_Click
httpJob.Initialize("",Me)
httpJob.Download("https://api.neshan.org/points.geojson")
End Sub
نتیجه ارسال درخواست در متدی به نام JobDone بازگردانده میشود که یک شیء از نوع HttpJob است. در ادامه نحوه دریافت فایل JSON را از طریق متد JobDone شرح خواهیم داد.
Sub JobDone(job As HttpJob)
If job.Success Then
Private out As OutputStream = File.OpenOutput(File.DirInternalCache,"points.geojson",False)
File.Copy2(job.GetInputStream,out)
out.Close
getAndShowPoints
Else
Log("Error:" & job.ErrorMessage)
End If
job.Release
End Sub
در قطعه کد بالا متغیر job محتوی پاسخ درخواست نقاط JSON است. ابتدا یک فایل به نام points.geojson در InternalCache ساخته میشود. سپس محتوای پاسخ در فایل ساخته شده ذخیره میشود. و در نهایت متد getAndShowPoints صدا زده میشود که در این متد محتوای فایل ذخیره شده خوانده میشود و نقاط استخراج شده به صورت نشانگر (مارکر) روی نقشه نمایش داده میشود.
Sub getAndShowPoints
If File.Exists(File.DirInternalCache,"points.geojson") Then
Private jsonParser As JSONParser
Private list1 As List
Private map As Map
jsonParser.Initialize(File.ReadString(File.DirInternalCache,"points.geojson"))
map = jsonParser.NextObject
list1 = map.Get("features")
package = reflector.GetStaticField("anywheresoftware.b4a.BA", "packageName")
Private markerDrawable As Int = reflector.GetStaticField(package & ".R$drawable", "icon")
Private map2 As Map
For Each feature As Map In list1
map2 = feature.Get("geometry")
Dim coordinateList As List
coordinateList = map2.Get("coordinates")
NeshanMapSdk1.addMarker(markerDrawable,25,coordinateList.Get(1),coordinateList.Get(0))
Next
NeshanMapSdk1.setCameraZoom(12,0.5)
End If
End Sub
در قطعه کد بالا، متغیر jsonParser فایل JSON ذخیره شده را در متد Initialize خود در قالب String دریافت میکند، پس از دریافت توسط متد NextObject مقادیر فایل JSON را استخراج کرده و در متغیری به نام map میریزد. متغیر map از نوع Map که نوعی key/value است میباشد. کلیدهای map فیلدهای JSON و VALUE های آن، مقادیر فیلدها میباشد.
توسط دستور Get میتوان مقادیر مربوط به فیلدها را از map استخراج کرد. خط map.Get(“features”) مقادیر مربوط به فیلد features را برمیگرداند که لیستی از feature هاست، درون feature فیلدی به نام geometry وجود دارد که مختصات نقاط درون آن جای دارد. قطعه کد بالا، توسط یک حلقه For نقاط را استخراج کرده و توسط متد addMarker که روی شیء نقشه صدا زده میشود، نشانگرهای مربوط به نقاط را روی نقشه اضافه میکند.