SlideShare a Scribd company logo
Nokia Series 40 için Harita ve Lokasyon
    Uygulamaları Geliştirmek

    Görkem Ercan (@GorkemErcan)
    Nokia




1
Ajanda
1. Giriş
2. Kurulum
3. Temel Harita işlemleri
4. Harita işaretleri
5. Konum ve Arama Servisleri
6. Konum Belirleme




2
Nokia Kütüphanelerine Giriş


 3
Nokia Harita Uygulama Kütüphaneleri
         http://www.developer.nokia.com/Maps/

•   Maps API for JavaScript
•   Nokia Places API (beta)
•   Map Image API for HTTP
•   Maps API for Qt
•   Maps API for Java ME




4
Nokia Java ME Harita Kütüphanesi
• MIDP 2.0 ve üstü telefonları destekler
• Series 40 telefonlar için optimize
• Façade Pattern ile alt seviye tüm detayları saklar
• 150 kB büyüklüğünde
• Farklı harita tipleri (Uydu, Alan, Transit vs)
• Polyline, polygon, işaretler gibi harita temel harita
   objelerine destek
• Arama, yol tarifi gibi servislere destek
• Genişletilebilir


http://www.developer.nokia.com/Develop/Maps/Maps_API_for_Java_ME/
   5
Nokia Java ME Harita Kütüphanesi ve
Statik Harita Servisleri




        Statik Servis    Nokia Java ME Harita
                             Kütüphanesi




6
Kurulum




7
Alışveriş Listesi
1. Java Runtime Environment 6
      http://www.java.com/en/download/index.jsp

2. Eclipse ve Eclipse MTJ
      http://www.eclipse.org/mtj
      http://www.developer.nokia.com/Resources/Library/Java/#!getting-started/

3. Nokia SDK for Java
      http://www.developer.nokia.com/Develop/Java/Tools/

4. Nokia Java ME Harita kütüphanesi
     http://www.developer.nokia.com/Develop/Maps/Maps_API_for_Java_ME/Getting_started/




 8
Java Harita Kütüphanesi
Jar dosyasını indirin
     http://www.developer.nokia.com/Develop/Maps/Maps_API_for_Java_ME/Getting_started/




                                                                    Nokia SDK for Java
                                                                     2.0 içine entegre



 9
Eclipse Ayarları
Projenize harita kütüphanesini ekleyin.




10
Nokia Developer kaydı
Ücretsiz olarak developer.nokia.com adresinde kayıt olun




 11
Token ve AppID
Her bir uygulamanız için ücretsiz olarak bir App Id and Token
alın
        https://api.developer.nokia.com/ovi-api/ui/registration




 12
Temel Harita İşlemleri




13
İlk Haritam
               5 satırda tam bir harita
        1. AppId ve Token’ ı ApplicationContext’e bildir
        2. Bir MapCanvas yarat
        3. Display.setCurrent() ile görüntüle




14
Farklı Harita Çeşitleri

Temel Harita tipleri




 Kod




15
Daha Çok Çeşitlerde Harita
1)    Bir MapSchemeListener yarat ve getAvailableMaps()’i çağır




2)    Başarılı veya Hatalı geri dönüşleri işle




1)    Geri dönen MapProviders listesine göre BaseMapType belirle




 16
Harita dilleri

• 8 farklı dil destekleniyor, henüz Türkçe yok
     • Arapça, Çince, Almanca, İngilizce,
       Fransızca, İtalyanca,Rusça, İspanyolca

• ApplicationContext’ de
  DefaultLanguage belirlemek yeterli




• Varsayılan dil İngilizce



17
Haritadaki olaylardan haberdar olmak



     • MapDisplay objesinde oluşan olaylardan haberdar olmak için bir
       MapComponent yaratın




     • MapComponent ‘a bir EventListener ekleyin




18
Harita işaretleri




19
Haritada İşaretler
•        MapStandardMarker
           • Çeşitli geometrik şekiller ve Balloon
           • Kolayca yazı eklenebilir, renk belirlenebilir
           • Varsayılan işaret ‘Nokia Mavisi’ Balloon



•        MapMarker
           • Genelde resim ikonlar eklemek için kullanılır

•        MapFactory kullanarak yaratılırlar




    20
Polyline ve Polygonlar
• MapPolyline birbirine bağlı noktalardan oluşur




• MapPolygon bağlı noktaların arasındaki alandır




• Tüm diğer harita objeleri gibi MapFactory ile yaratılırlar

• Bu objelerindeki GeoBoundingBox sıkça kullanacağınız
  bir özellikdir


 21
MapCanvas MapDisplay MapObject




• MapCanvas , MapFactory ve MapDisplay objelerini barındırır
• MapFactory tüm MapObject tipindeki objelerin yaratılmasında
  kullanılır
• MapFactory kullanarak bir MapDisplay yaratabilirsiniz
• MapDisplay kendisi de MapObject tipinde bir objedir
• MapObject tipindeki objeler bir MapContainer içinde tutulabilir

22
Konum ve Arama Servisleri




23
Geocode Arama
•    Adresten harita lokasyonunu arar

•    Aramalar senkron veya asenkron
     olabilir

•    Asenkron olanı tercih edin

1. Bir GeoCodeRequestListener yaratın


2. Bir GeoCodeRequest yaratın



3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin




24
Geri Geocode Arama
     •   Coğrafik koordinatlardan adres aramadı.
     •   Aramalar senkron veya asenkron olabilir
     •   Asenkron olanı tercih edin

     1. ReverseGeocodeRequestListener yaratın


     2. ReverseGeoCodeRequest yaratın




     3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin




25
Yer Arama
• Yerel aramalar
         •   Text arama (örnek: “Pizza”)
         •   Kategori arama (örnek: restaurant)
         •   Veya kombinasyonu (örnek: “Cake” + restaurant)




• Detaylı sonuçlar
     •   Haberleşme bilgileri
     •   Açılış zamanları
     •   Tanımlar, yorumlar
     •   Resimler...




26
Nasıl Yer Arama Yapılır
     1. PlaceSearchRequestListener yarat


     2. PlaceSearchRequest yarat




     3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin



     4. Detaylara Result içinden ulaşabilirsiniz




27
Rota Servisi
      • Rota Servisi bir veya daha fazla nokta (waypoint) arasında
        yol bulmak için kullanılır
      • Rota servisinden cevap dönmesi zaman alabilir onun için
        Rota servisi ile asenkron çalışmak daha iyidir

     1. RouteListener      yarat

     2. RouteRequest     yarat




     3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin




28
Rota Servisi
 • Yol hesaplama yöntemi RoutingMode parametreleri
   değiştirilerek optimize edilebilir

     •   Routing Type – default is RoutingType.Shortest




     •   Mode of Transport – default is TransportMode.CAR




     •   Additional Restrictions – None are selected by default




29
Paylaşma Yöneticisi
     • RESTful harita kütüphanesi için Kısa ve şifreli URL’ ler oluşturur


     • URL SMS veya benzeri bir yöntemle aynı haritayı açmak üzere
       paylaşılabilir

     • İstemci yeteneklerine göre maps.nokia.com veya
       m.maps.nokia.com açılır




30
Konum belirleme




31
Series 40 telefonlar ile konum bulmak
• Java uygulamaları JSR-179 Location kütüphanesi ile konum
  beliryebilirler
• İki şekilde konum belirlenebilir
  • Cell ID positioning
  • GPS
• Series 40 telefon GPS pek çok modelde bulunmadığından Cell-
  ID daha yaygın bir yöntemdir
• Harita kütüphanesinin bir parçası değildir




32
Cell-ID ile konum belirleme
• Yöntem bir servise cihazın o anda iletişimde bulunduğu GSM
  hücresinin numarasını bildirilmesi ve servisten bunun karşılığında bir
  coğrafik koordinat alınması ile gerçekleşir

• Bu yöntemin yanılma payı bölgedeki hücre sıklığına göre değişir


                                                  Cell-ID accuracy
                                          12000
                      Accuracy (meters)




                                          10000
                                           8000
                                           6000
                                           4000
                                           2000
                                              0
                                                   Urban   Suburban   Rural




 33
Cell-ID ile Konum Belirleme
1) LocationUtil kullanarak Cell-ID destekleyen bir
   LocationProvider yarat


     Note: getLocationProvider() ikinci parametresini şimdilik null
     verebilirsiniz.
2) getLocation() çağır ve sonucu işle




QualifiedCoordinate ve GeoCoordinate arasında birebir eşleşme
vardır




34
LocationUtil
• Konum belirleme yöntemleri aşağıdaki
  gibi kombinasyonlar olabilir

Useful Combinations
• Offline Cell ID

• Standalone GPS

• Assisted GPS

• Online Cell ID an/or WLAN



35
GPS ile Konum Belirleme

1. Create a GPS LocationProvider




2. Set the provider to start polling

3. Retrieve and process the result




 36
Daha Fazla Bilgi
En son SDK ve bilgiler için
http://developer.nokia.com

Nokia Developer Java dökümanları
http://www.developer.nokia.com/Resources/Library/Java

Nokia Harita Kütüphaneleri
http://developer.nokia.com/Maps

Bu webinardaki kod örnekleri
https://github.com/gorkem/MapsWebinar

Nokia Developer Türkiye
http://developer.nokia.com/tr
http://facebook.com/NokiaDevTr
http://twitter.com/NokiaDevTr
 37

More Related Content

Intro to Apps with Maps for Series 40 (Turkish)

  • 1. Nokia Series 40 için Harita ve Lokasyon Uygulamaları Geliştirmek Görkem Ercan (@GorkemErcan) Nokia 1
  • 2. Ajanda 1. Giriş 2. Kurulum 3. Temel Harita işlemleri 4. Harita işaretleri 5. Konum ve Arama Servisleri 6. Konum Belirleme 2
  • 4. Nokia Harita Uygulama Kütüphaneleri http://www.developer.nokia.com/Maps/ • Maps API for JavaScript • Nokia Places API (beta) • Map Image API for HTTP • Maps API for Qt • Maps API for Java ME 4
  • 5. Nokia Java ME Harita Kütüphanesi • MIDP 2.0 ve üstü telefonları destekler • Series 40 telefonlar için optimize • Façade Pattern ile alt seviye tüm detayları saklar • 150 kB büyüklüğünde • Farklı harita tipleri (Uydu, Alan, Transit vs) • Polyline, polygon, işaretler gibi harita temel harita objelerine destek • Arama, yol tarifi gibi servislere destek • Genişletilebilir http://www.developer.nokia.com/Develop/Maps/Maps_API_for_Java_ME/ 5
  • 6. Nokia Java ME Harita Kütüphanesi ve Statik Harita Servisleri Statik Servis Nokia Java ME Harita Kütüphanesi 6
  • 8. Alışveriş Listesi 1. Java Runtime Environment 6 http://www.java.com/en/download/index.jsp 2. Eclipse ve Eclipse MTJ http://www.eclipse.org/mtj http://www.developer.nokia.com/Resources/Library/Java/#!getting-started/ 3. Nokia SDK for Java http://www.developer.nokia.com/Develop/Java/Tools/ 4. Nokia Java ME Harita kütüphanesi http://www.developer.nokia.com/Develop/Maps/Maps_API_for_Java_ME/Getting_started/ 8
  • 9. Java Harita Kütüphanesi Jar dosyasını indirin http://www.developer.nokia.com/Develop/Maps/Maps_API_for_Java_ME/Getting_started/ Nokia SDK for Java 2.0 içine entegre 9
  • 10. Eclipse Ayarları Projenize harita kütüphanesini ekleyin. 10
  • 11. Nokia Developer kaydı Ücretsiz olarak developer.nokia.com adresinde kayıt olun 11
  • 12. Token ve AppID Her bir uygulamanız için ücretsiz olarak bir App Id and Token alın https://api.developer.nokia.com/ovi-api/ui/registration 12
  • 14. İlk Haritam 5 satırda tam bir harita 1. AppId ve Token’ ı ApplicationContext’e bildir 2. Bir MapCanvas yarat 3. Display.setCurrent() ile görüntüle 14
  • 15. Farklı Harita Çeşitleri Temel Harita tipleri Kod 15
  • 16. Daha Çok Çeşitlerde Harita 1) Bir MapSchemeListener yarat ve getAvailableMaps()’i çağır 2) Başarılı veya Hatalı geri dönüşleri işle 1) Geri dönen MapProviders listesine göre BaseMapType belirle 16
  • 17. Harita dilleri • 8 farklı dil destekleniyor, henüz Türkçe yok • Arapça, Çince, Almanca, İngilizce, Fransızca, İtalyanca,Rusça, İspanyolca • ApplicationContext’ de DefaultLanguage belirlemek yeterli • Varsayılan dil İngilizce 17
  • 18. Haritadaki olaylardan haberdar olmak • MapDisplay objesinde oluşan olaylardan haberdar olmak için bir MapComponent yaratın • MapComponent ‘a bir EventListener ekleyin 18
  • 20. Haritada İşaretler • MapStandardMarker • Çeşitli geometrik şekiller ve Balloon • Kolayca yazı eklenebilir, renk belirlenebilir • Varsayılan işaret ‘Nokia Mavisi’ Balloon • MapMarker • Genelde resim ikonlar eklemek için kullanılır • MapFactory kullanarak yaratılırlar 20
  • 21. Polyline ve Polygonlar • MapPolyline birbirine bağlı noktalardan oluşur • MapPolygon bağlı noktaların arasındaki alandır • Tüm diğer harita objeleri gibi MapFactory ile yaratılırlar • Bu objelerindeki GeoBoundingBox sıkça kullanacağınız bir özellikdir 21
  • 22. MapCanvas MapDisplay MapObject • MapCanvas , MapFactory ve MapDisplay objelerini barındırır • MapFactory tüm MapObject tipindeki objelerin yaratılmasında kullanılır • MapFactory kullanarak bir MapDisplay yaratabilirsiniz • MapDisplay kendisi de MapObject tipinde bir objedir • MapObject tipindeki objeler bir MapContainer içinde tutulabilir 22
  • 23. Konum ve Arama Servisleri 23
  • 24. Geocode Arama • Adresten harita lokasyonunu arar • Aramalar senkron veya asenkron olabilir • Asenkron olanı tercih edin 1. Bir GeoCodeRequestListener yaratın 2. Bir GeoCodeRequest yaratın 3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin 24
  • 25. Geri Geocode Arama • Coğrafik koordinatlardan adres aramadı. • Aramalar senkron veya asenkron olabilir • Asenkron olanı tercih edin 1. ReverseGeocodeRequestListener yaratın 2. ReverseGeoCodeRequest yaratın 3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin 25
  • 26. Yer Arama • Yerel aramalar • Text arama (örnek: “Pizza”) • Kategori arama (örnek: restaurant) • Veya kombinasyonu (örnek: “Cake” + restaurant) • Detaylı sonuçlar • Haberleşme bilgileri • Açılış zamanları • Tanımlar, yorumlar • Resimler... 26
  • 27. Nasıl Yer Arama Yapılır 1. PlaceSearchRequestListener yarat 2. PlaceSearchRequest yarat 3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin 4. Detaylara Result içinden ulaşabilirsiniz 27
  • 28. Rota Servisi • Rota Servisi bir veya daha fazla nokta (waypoint) arasında yol bulmak için kullanılır • Rota servisinden cevap dönmesi zaman alabilir onun için Rota servisi ile asenkron çalışmak daha iyidir 1. RouteListener yarat 2. RouteRequest yarat 3. Başarılı ve başarısız dönüşde ne yapacağınıza karar verin 28
  • 29. Rota Servisi • Yol hesaplama yöntemi RoutingMode parametreleri değiştirilerek optimize edilebilir • Routing Type – default is RoutingType.Shortest • Mode of Transport – default is TransportMode.CAR • Additional Restrictions – None are selected by default 29
  • 30. Paylaşma Yöneticisi • RESTful harita kütüphanesi için Kısa ve şifreli URL’ ler oluşturur • URL SMS veya benzeri bir yöntemle aynı haritayı açmak üzere paylaşılabilir • İstemci yeteneklerine göre maps.nokia.com veya m.maps.nokia.com açılır 30
  • 32. Series 40 telefonlar ile konum bulmak • Java uygulamaları JSR-179 Location kütüphanesi ile konum beliryebilirler • İki şekilde konum belirlenebilir • Cell ID positioning • GPS • Series 40 telefon GPS pek çok modelde bulunmadığından Cell- ID daha yaygın bir yöntemdir • Harita kütüphanesinin bir parçası değildir 32
  • 33. Cell-ID ile konum belirleme • Yöntem bir servise cihazın o anda iletişimde bulunduğu GSM hücresinin numarasını bildirilmesi ve servisten bunun karşılığında bir coğrafik koordinat alınması ile gerçekleşir • Bu yöntemin yanılma payı bölgedeki hücre sıklığına göre değişir Cell-ID accuracy 12000 Accuracy (meters) 10000 8000 6000 4000 2000 0 Urban Suburban Rural 33
  • 34. Cell-ID ile Konum Belirleme 1) LocationUtil kullanarak Cell-ID destekleyen bir LocationProvider yarat Note: getLocationProvider() ikinci parametresini şimdilik null verebilirsiniz. 2) getLocation() çağır ve sonucu işle QualifiedCoordinate ve GeoCoordinate arasında birebir eşleşme vardır 34
  • 35. LocationUtil • Konum belirleme yöntemleri aşağıdaki gibi kombinasyonlar olabilir Useful Combinations • Offline Cell ID • Standalone GPS • Assisted GPS • Online Cell ID an/or WLAN 35
  • 36. GPS ile Konum Belirleme 1. Create a GPS LocationProvider 2. Set the provider to start polling 3. Retrieve and process the result 36
  • 37. Daha Fazla Bilgi En son SDK ve bilgiler için http://developer.nokia.com Nokia Developer Java dökümanları http://www.developer.nokia.com/Resources/Library/Java Nokia Harita Kütüphaneleri http://developer.nokia.com/Maps Bu webinardaki kod örnekleri https://github.com/gorkem/MapsWebinar Nokia Developer Türkiye http://developer.nokia.com/tr http://facebook.com/NokiaDevTr http://twitter.com/NokiaDevTr 37