Помош GPS мобилна апликација

  • Креатор на темата Креатор на темата Рунчев
  • Време на започнување Време на започнување

Рунчев

Esi mi dobaaar
Член од
29 мај 2007
Мислења
1.267
Поени од реакции
210
Локација
Кочани
Бидејќи сум во план да учам нешто повеќе за Windows mobile апликациите, сакам некој ако може во кратки црти да ми објасни, како би можел во мојата апликација преку GPS да користам податоци од некој сателит, односно дали има некој бесплатни и слично. Дали можам да ги користам севиси како googlemaps и слично.
 
Ама баш ништо не ми е јасно што тоа сакаш да научиш?
ГПСот е бесплатен, софтверот кој го користи - и да и не!
Што планираш ти тоа да учиш? Дај елаборирај!
 
Бидејќи сум во план да учам нешто повеќе за Windows mobile апликациите, сакам некој ако може во кратки црти да ми објасни, како би можел во мојата апликација преку GPS да користам податоци од некој сателит, односно дали има некој бесплатни и слично. Дали можам да ги користам севиси како googlemaps и слично.

Не се разбирам многу во ГПС апликациите, нивниот код и структура..но знам како работи ГПС системот.

Тој прима податоци од атомскиот часовник вграден во сателитот кои патуваат со брзината на светлината. Потоа се мери времето потребно сигналот да стигне до ресиверот и се регистрира моменталната позиција на сателитот. Самиот систем прави калкулација врз основа на податоците добиени од 3 различни сателити, и со огромна претцизност и синхронизација - ги креира координатите од моменталната локација на ресиверот.
Значи, ГПС-от како систем и софтвер, нуди финален продукт - координати од неговата моментална локација.
Претцизноста кај обичниот ГПС варира од 0-20 метри, а кај диференцијалните ГПС е многу поточна и варира од 0-1 метар, бидејки тој користи и фиксна локација како екстра помош во калкулацијата.
Е сега апликацијата со помош на непрекинат update, може да ги претвара податоците во online мапи, навигациони програми, итн итн итн..
Во секој случај како што реков, финален продукт на една ГПС калкулација е моменталната локација на ресиверот прикажана во координати.
А ти како програмер, таа променлива(координатите) ке ја употребиш според твоите потреби во апликацијата што планираш да ја направиш.
Со користење на бесплатни ГПС сервиси, не знам што воопшто би можел да направиш, бидејќи горе-долу скоро све има веќе готово.
Е сега ако сакаш да си иновативен, види распрашај се дали можеш да го употребиш твојот софтвер во некоја нова интересна хардверска "играчка".
 
Не се разбирам многу во ГПС апликациите, нивниот код и структура..но знам како работи ГПС системот.

Тој прима податоци од атомскиот часовник вграден во сателитот кои патуваат со брзината на светлината. Потоа се мери времето потребно сигналот да стигне до ресиверот и се регистрира моменталната позиција на сателитот. Самиот систем прави калкулација врз основа на податоците добиени од 3 различни сателити, и со огромна претцизност и синхронизација - ги креира координатите од моменталната локација на ресиверот.
Значи, ГПС-от како систем и софтвер, нуди финален продукт - координати од неговата моментална локација.
Претцизноста кај обичниот ГПС варира од 0-20 метри, а кај диференцијалните ГПС е многу поточна и варира од 0-1 метар, бидејки тој користи и фиксна локација како екстра помош во калкулацијата.
Е сега апликацијата со помош на непрекинат update, може да ги претвара податоците во online мапи, навигациони програми, итн итн итн..
Во секој случај како што реков, финален продукт на една ГПС калкулација е моменталната локација на ресиверот прикажана во координати.
А ти како програмер, таа променлива(координатите) ке ја употребиш според твоите потреби во апликацијата што планираш да ја направиш.
Со користење на бесплатни ГПС сервиси, не знам што воопшто би можел да направиш, бидејќи горе-долу скоро све има веќе готово.
Е сега ако сакаш да си иновативен, види распрашај се дали можеш да го употребиш твојот софтвер во некоја нова интересна хардверска "играчка".
Па тоа ми е идејата, да ги добивам координатите и да ги искористам во програми изградени од мене :) Е сеа прашањето е како можам да ги добијам координатите :)
 
Прво што ти треба е да се одлучиш за која платформа ќе развиваш. Windows Mobile 5/6/6.5... ти е најстрого забранета.

Моментално најактуелни ти се: iOS, Android и Windows Phone 7. Се друго ќе ти биде губење време. Е сега ќе те прашам тоа што би те прашал секој, што знаеш моментално за да знаеме како да разговараме со тебе? Дали си почнал со нешто или сакаш со 0 знаење да прави апликации кои користат мапи и гпс координати? Дали си направил Hello World апликација? Дали си направил некоја посложена аплиакција?

За другите платформи незнам, но за Android постојат готови APIа кои само ќе ги искористиш соодветно и ќе го правиш тоа што ти е замислата. 99% сум сигурен дека истото е и со другите две платформи. На интернет ќе најдеш многу примери, но ако немаш познавање и не ја имаш совладано основата ниту ќе ги разбереш, ниту ќе знаеш да ги имплементираш. Делот околу координатите... практично не се замараш со тоа, едноставно само ги читаш координатите со соодветниот повик и не се замараш телефонот/оперативниот систем како ги добил од уредот. При работа во емулаторот, од командна линија си ставаш твои координати колку да тестираш за андроид. За Windows Phone 7, имаше мислам во Visual Studio-то соодветна алатка за тоа, а за iOS незнам како е точно при работа со емулаторот.
 
Прво што ти треба е да се одлучиш за која платформа ќе развиваш. Windows Mobile 5/6/6.5... ти е најстрого забранета.

Моментално најактуелни ти се: iOS, Android и Windows Phone 7. Се друго ќе ти биде губење време. Е сега ќе те прашам тоа што би те прашал секој, што знаеш моментално за да знаеме како да разговараме со тебе? Дали си почнал со нешто или сакаш со 0 знаење да прави апликации кои користат мапи и гпс координати? Дали си направил Hello World апликација? Дали си направил некоја посложена аплиакција?

За другите платформи незнам, но за Android постојат готови APIа кои само ќе ги искористиш соодветно и ќе го правиш тоа што ти е замислата. 99% сум сигурен дека истото е и со другите две платформи. На интернет ќе најдеш многу примери, но ако немаш познавање и не ја имаш совладано основата ниту ќе ги разбереш, ниту ќе знаеш да ги имплементираш. Делот околу координатите... практично не се замараш со тоа, едноставно само ги читаш координатите со соодветниот повик и не се замараш телефонот/оперативниот систем како ги добил од уредот. При работа во емулаторот, од командна линија си ставаш твои координати колку да тестираш за андроид. За Windows Phone 7, имаше мислам во Visual Studio-то соодветна алатка за тоа, а за iOS незнам како е точно при работа со емулаторот.
За мобилни апликации сум тотален почетни, односно пред недела го ставив Windows Mobile 7 SDK, но имам работено доста на десктоп апликации и асп страни, така да Visual studio горе-долу го работам добро. Од јазиците сум работил Java и C# така повеќе, па затоа одлучив да учам нешто повеќе за Windows Mobile апликации, и некако мислам дека има поголема иднина во нив.Сега ако би можел ти како поупатен во ова, да ми дадеш некој едноставен пример за разглеување, би требало да не е нешто многу поразлично, особено од asp.net. Поздрав
 
Ако те интересира што треба да користиш за да ги земаш од GPS податоците за локацијата...ова е дел од моја апликација. Како што горе кажаа GPSот бесплатен и ред други фактори за локацијата. Треба да користиш GeoCoordinateWatcher classата и да имаш еден event listener за апликацијата да реагира соодветно на промената на координатите во функцијата што ја задаваш во EventHandler-от. Појди си на MSDN и разгледај ги сите методи од класите, ако си работел со C# и Silverlight претходно нема да имаш проблем. Во ова подолу има многу непотребни работи, пошто немав WP7 телефон морав рачно да правам. Инаку WP7 емулаторот мислам дека не поддржува coordinate mocking, т.е да симулираш GPS сателит, што со Андроид емулаторот го можеш тоа.

Код:
 void getGPSData()
        {
            watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default) { MovementThreshold = 5 };
            watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(onLocationChanged);
            watcher.Start();
            GeoCoordinate e = new GeoCoordinate();
          e.Latitude = 41.5126639;
            e.Longitude = 20.9547032;
 
        getGoogleGeocoder(e);
 
            MapLayer mapLayer = new MapLayer();
          Image image = new Image();
 
            PositionOrigin p = PositionOrigin.Center;
 
            map1.Children.Add(mapLayer);
            Pushpin p1 = new Pushpin();
   
            p1.Content = "YOU ARE HERE";
            p1.Location = e;
            mapLayer.AddChild(p1, e, p);
          // mapLayer.AddChild(p, , PositionOrigin.BottomLeft);
          //  map1.SetView(LocationRect.CreateLocationRect(e));
 
 
        }


Код:
public void onLocationChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) {

Во овај метод 2риот аргумент секогаш ќе ти ги содржи информациите за локацијата, користи го member операторот за да ги пристапиш вредностите (на fields).

Aко те интересира како истово се прави во Android пиши. Таму е позабавно и полесно (пропаганда ширам) :P
 
За Андроидот, мислев дека е потешко и затоа го тргнам , тука демек готови класи она ова, полесно за користење, и затоа. Инаку слободно стави и за Андроид.

п.с Колку е (не)лесно трансформацијата на една апликација од андроид во win mobile 7.
 
За Андроидот, мислев дека е потешко и затоа го тргнам , тука демек готови класи она ова, полесно за користење, и затоа. Инаку слободно стави и за Андроид.

п.с Колку е (не)лесно трансформацијата на една апликација од андроид во win mobile 7.

Што треба да направиш во андроид? Треба да инстанцираш ЛокејшнМенаџер и да го регистрираш за на Локејшн_Сервис-от на телефонот. Потоа му кажуваш на ЛМ како да бара промени во локацијата, му специфицарш колку да е минимум времето и минимум растојанието изминато за да побара апјдејт од сателитите. За да ги регистираш сите апдејти ќе направиш Activity-то да implements LocationListener тоа е интерфејс што работи секогаш кога ќе има некаква промена. Доколку сакаш да пратиш координати до емулаторот оди во DDMS перспективата во Emulator Control имаш полиња кај шо ќе ги пишиш координатите (како да се пратени од сателит). Доколку сакаш да работиш со NMEA стрингојте што ги праќаат сателитите како суров податок тогаш ќе мораш преку cmd да пратиш NMEA фајл и да ги процесираш целиот фајл за да ги извадиш потребните информации. Се надевам дека не си фрик што ќе го испроцесира целиот тој хаос од стрингови :P. Повеќето од потребните информации за локацијата (long, lat, speed, time, број на сателити, azimuth, bearing, accuracy) веќе ти ги нуди класата. Исто така можеш да си креираш сопствена Criteria. Но доколку сакаш други податоци тогаш ќе мора сам да ги извадиш од NMEA фајлот. Ако нешто имаш нејасно во врска со кодот. Пиши или разгледај ј документацијата.
Код:
package com.test.kajgana;
 
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
 
public class KajganaGPSTema extends Activity implements LocationListener {
    private LocationManager mLocationManager;
    private Location mLocation;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
      mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //
      int minimumVreme = 10000; // 10 sekundi megju sekoj update
      int minimumRastojanie = 100; // 100 metri;
      mLocationManager.requestLocationUpdates( minimumVreme,  minimumRastojanie, null, null);
      mLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); // ili  LocationManager.NETWORK_PROVIDER
      Log.i("Mojata lokacija vo Lat i Long : ", "Lat: "+ mLocation.getLatitude()/1E6 + " Long: "+ mLocation.getLongitude()/1E6)
    }
    @Override
    public void onLocationChanged(Location location) {
        //ovaj method sekogash kje ti bide povikan koga kje ima nekoi izmeni vo lokacijata; (izminato vreme ili izminato rastojanie
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        //method od listenerot za promeni vo providerot
 
    }
    @Override
    public void onProviderEnabled(String provider) {
        // method od listenerot za izmeni vo providerot koga e enabled
 
    }
    @Override
    public void onProviderDisabled(String provider) {
        //method za listenerot za izmeni vo providerot koga e disabled
    }
}

За прашањето за портирање апликации од Андроид во WP7 и обратно, треба да го разгледаш гајдот за интероперабилити (ако го најдам линкот ќе ти го пратам). Тука се објаснети сите алтернативи од едната платформа во другата. WP7 изостанува за некои widge-ти што ги нема во Silverlight-от а ги има во Андроид СДК.


Јас одбирав Андроид :)
 

Kajgana Shop

Back
На врв Bottom