Soru & Cevap

Android Google Map ...

05.11.2014 - 11:44

Merhabalar,

Android projemde haritayı kullanmak istiyorum ama bir türlü entegre edemedim aşamaları tek tek yaptım sorum şu projemde aynı zamanda GCM kullanıyorum push notification geliyor bunun içinde google nun API KEY kısmını kullanıyorum harita içinde API KEY istiyor aynısını kullanmaya çalışıyorum fakat uygulama çöküyor acaba sorun nedir ? servislerin çakışması gibi bi durum olabiliyor mu ? Teşekkürler.. 

38 Görüntülenme

12 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user kemalkirezci
kemalkirezci
11.11.2014 - 09:16

Merhaba; Ufak bir uygulama yaptım. Benim koordinatımı buluyor. Fakat buradan atamıyorum. E-Posta adresinisi gönderirseniz mail olarak ileteyim.

Alper Gökhan Beyler
11.11.2014 - 09:36
merhaba çok teşekkür ederim email adresim alper_beyler@hotmail.com
picture-19298-1459404577.jpg
alper_beyler
10.11.2014 - 03:52

[code]

public  class GoogleMaps extends Fragment implements android.location.LocationListener{

    public RelativeLayout llLayout;
    private GoogleMap google_map;
    public LocationManager manager;
    public Context context;
    public LocationClient location_client;
    public Location my_location;
    public double latitude;
    public double longitude;
    
    
    public boolean isGPSEnabled = false;
    public boolean isNetworkEnabled = false;
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;
    
     public void onDestroyView()
     {
         //super.onDestroyView();
         
         super.onDestroy();
         
         SupportMapFragment fragment = (SupportMapFragment) getActivity()
                 .getSupportFragmentManager().findFragmentById(
                     R.id.haritafragment);
           if (fragment != null) getFragmentManager().beginTransaction().remove(fragment).commit();
         
     }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        
        
        super.onCreate(savedInstanceState);
        llLayout = (RelativeLayout) inflater.inflate(
                R.layout.map, container, false);
        
        isGPSEnabled = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        isNetworkEnabled = manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
         
         try{
             if (google_map == null)
             {
                 google_map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.haritafragment)).getMap();
                 
                 if(google_map != null){
                     
                     if(isNetworkEnabled)
                     {
                         manager.requestLocationUpdates(
                                LocationManager.NETWORK_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                         
                         
                         if(manager!=null)
                         {
                             my_location = manager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                             if(my_location != null)
                             {
                                 latitude = my_location.getLatitude();
                                 longitude = my_location.getLongitude();
                                 LatLng lng = new LatLng(latitude,longitude);
                                  google_map.addMarker(new MarkerOptions().position(lng).title("You are here"));
                                  google_map.moveCamera(CameraUpdateFactory.newLatLngZoom(lng, 13));
                             }
                         }
                     }
                     
                     if(isGPSEnabled)
                     {
                         if(my_location==null)
                         {
                             manager.requestLocationUpdates(
                                    LocationManager.GPS_PROVIDER,
                                    MIN_TIME_BW_UPDATES,
                                    MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                             
                             if(manager!=null)
                             {
                                 
                                 my_location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                                 if(my_location!=null)
                                 {
                                     latitude = my_location.getLatitude();
                                     longitude = my_location.getLongitude();
                                     LatLng lng = new LatLng(latitude,longitude);
                                      google_map.addMarker(new MarkerOptions().position(lng).title("You are here"));
                                      google_map.moveCamera(CameraUpdateFactory.newLatLngZoom(lng, 13));
                                 }
                                 
                                 
                             }
                         }
                     }
                         
             
                      
                 /*    
                     LatLng istanbulKoordinat = new LatLng(41.021161,29.004065);
                     google_map.addMarker(new MarkerOptions().position(istanbulKoordinat).title("Kız Kulesi"));
                     google_map.moveCamera(CameraUpdateFactory.newLatLngZoom(istanbulKoordinat, 13));         
                 */    
                     
                     //google_map.setMyLocationEnabled(true);
                     
                     
             /*        my_location = google_map.getMyLocation();
                     latitude = my_location.getLatitude();
                     longitude = my_location.getLongitude();
                     LatLng lng = new LatLng(latitude,longitude);
                      google_map.addMarker(new MarkerOptions().position(lng).title("You are Here"));
                      google_map.moveCamera(CameraUpdateFactory.newLatLngZoom(lng, 13));
                 
                 */    
                     
                     
                 }
            }
             
             
             
            }catch(Exception e)
            {
                e.printStackTrace();
            }
         
         
         
      
         
        
        
        return llLayout;
    }
    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
        
    }

 

 

[/code]

Profile picture for user kemalkirezci
kemalkirezci
10.11.2014 - 09:51

Merhaba;

[code]

boolean isGPSEnabled = false;

boolean isNetworkEnabled = false;

isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

[/code]

Şeklinde alabilirsin.

Kemal KİREZCİ
10.11.2014 - 03:12
Manifest'e android.permission.ACCESS_COARSE_LOCATION ve android.permission.ACCESS_FINE_LOCATION izinlerini verir misin.
Kemal KİREZCİ
10.11.2014 - 03:11
Manifest'e yetkilerini verir misin.
Alper Gökhan Beyler
10.11.2014 - 03:53
izinleri verdim android.permission.ACCESS_COARSE_LOCATION bu yokdu bi tek onu da ekledim kodu yapıştırdım bi bakabilir misiniz
Alper Gökhan Beyler
10.11.2014 - 03:04
kodları yazdım dışarı çıktım çalıştırdım olmadı biraz daha uzaklaştım yürüdüm tekrardan çalıştırdım yine olmadı :( ne yapmam gerekiyor sadece map açılıyor kordinatlar hep null geliyor
Profile picture for user kemalkirezci
kemalkirezci
07.11.2014 - 09:38

Merhaba;

Şu şekilde dener misiniz. Hem network Provider alıyor, hem GPS Provider. Daha önce kullanmıştım. Ama null gelmesinin nedenin sebebi büyük ihtimalle kapalı alanda çalışmanız. Koordinatınızı haritada görmek yerine. Yeni bir proje açın, İki buton koyun boş bir forma, TextView'a koordinatınızı yazdırmayı deneyin. Provider'ları bu şekilde kullanın. Butonlardan birisi GPS Provider çalışsın, diğeri NetworkProvider. Dışarıda olduğunuz zaman bu şekilde koordinatınızı almayı deneyin.

[code]

private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;
protected LocationManager locationManager;

if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        
                        
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                            
                        }
                    }
                }
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                                accuracy = location.getAccuracy();
                            }
                        }
                    }

[/code]

Alper Gökhan Beyler
10.11.2014 - 09:52
merhabalar, isNetworkEnabled ve isGPSEnabled bunların kontrollerini tam olarak nerede yapıyorsun ? bide içerde çalışıyorum iş yerinde ama içeride konum bilgisini hiç bir zaman getiremeyecek miyim ?
Profile picture for user kemalkirezci
kemalkirezci
07.11.2014 - 04:12

Konumunuzu NetworkProvider ile almayı dener misiniz? Eğer NetworkProvider ile konumunuzu alabilirseniz ve kapalı alandaysanız GPS'iniz sinyal alamadığı için Provider null geliyordur.

Alper Gökhan Beyler
07.11.2014 - 05:38
NetworkProvider ile nasıl alınacak tam olarak ben deniyorum hep null geliyor bide kapalı alanda çalışıyorum hem telefondan çalıştırdığımda hem de geny motion emulator de sadece harita çıkıyor konumum gelmiyor
picture-19298-1459404577.jpg
alper_beyler
07.11.2014 - 03:43

bir türlü bulunduğum konumu çekemiyorum harita açılıyor fakat enlem ve boylamlar her defasında sıfır geliyor comment içinde bulunan kodlarda enlem ve boylam bilgileri manuel olarak girilince 'kız kulesi' haritada çıkıyor onun dışında diğer commentler deki kodlar aynı şekilde çalışmıyor nedeni nedir acaba ?

[code]

if (google_map == null)
             {
                 google_map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.haritafragment)).getMap();
                 if(google_map != null){
                     
                     LocationManager lm = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
                     Location location = null;
                     if(service_type.equals("LocationManager.GPS_PROVIDER"))
                     {
                         location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                         if(location!=null)
                         {
                             double latitude = location.getLatitude();
                             double longitude = location.getLongitude();
                             LatLng lng = new LatLng(latitude, longitude);
                             google_map.addMarker(new MarkerOptions().position(lng).title("you are here"));
                             
                         }
                         
                     }
                      
                 /*    
                     LatLng istanbulKoordinat = new LatLng(41.021161,29.004065);
                     google_map.addMarker(new MarkerOptions().position(istanbulKoordinat).title("Kız Kulesi"));
                     google_map.moveCamera(CameraUpdateFactory.newLatLngZoom(istanbulKoordinat, 13));         
                 */    
                     
                 /*    google_map.setMyLocationEnabled(true);
                     
                     
                     my_location = google_map.getMyLocation();
                     latitude = my_location.getLatitude();
                     longitude = my_location.getLongitude();
                     LatLng lng = new LatLng(latitude,longitude);
                      google_map.addMarker(new MarkerOptions().position(lng).title("You are Here"));
                      google_map.moveCamera(CameraUpdateFactory.newLatLngZoom(lng, 13));
                 
                     */
                     
                     
                 }
            }
             

 

 

 

[/code]

picture-7494-1397646387.jpg
baranbuyuk
07.11.2014 - 01:48

Lokasyon için bir örnek göndereyim size..

 

[code]public static Double[] getLokasyon(Activity activity, String servisTipi) {
        Double[] enlemBoylam = new Double[2];
        LocationManager lm = (LocationManager) activity
                .getSystemService(Context.LOCATION_SERVICE);
        Location location = null;
        if (servisTipi.equals(LOKASYON_SERVISI_GPS)) {
            location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if (location != null) {
                enlemBoylam[0] = location.getLatitude();
                enlemBoylam[1] = location.getLongitude();
                return enlemBoylam;
            }
            // location null gelirse
            servisTipi = LOKASYON_SERVISI_NETWORK;
        }
        if (servisTipi.equals(LOKASYON_SERVISI_NETWORK)) {
            location = lm
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            if (location != null) {
                enlemBoylam[0] = location.getLatitude();
                enlemBoylam[1] = location.getLongitude();
                return enlemBoylam;
            }
        }
        return null;
    }[/code]

Alper Gökhan Beyler
07.11.2014 - 02:20
Merhabalar, benim tam olarak yapmak istediğim güncel location bilgisini alarak haritayı açtığımda onu göstermek ama bir türlü olmuyor bu kodlar neden çalışmıyor bir bilgi verebilir misin ? getMyLocation(); fonksiyonu neden çalışmıyor enlem ve boylamı yazsam bile ?
Alper Gökhan Beyler
07.11.2014 - 02:23
bir sorum daha olacak sizin gönderdiğiniz bu kod da servisTipi tam olarak ne oluyor ?
Baran BÜYÜK
07.11.2014 - 02:37
Telefonla iki şekilde kişinin bulunduğu konumun koordinatlarını alabilirsin. Bir telefonun GPS özelliğini kullanarak ya da telefonun Network özelliğini kullanarak. Bu kod benim bir uygulamda kullandığım kod idi. O zaman servis tiplerini kendim belirtmiştim. LocationManager.GPS_PROVIDER veya LocationManager.NETWORK_PROVIDER sabitlerini kullanabilirsiniz. Yani, hangi servisi kullanarak lokasyon almak istiyorsan onu gönderiyorsun..
Baran BÜYÜK
07.11.2014 - 02:39
Bunların dışında, en iyi lokasyon bilgisi nasıl alınır öğrenmek istiyorsan http://developer.android.com/guide/topics/location/strategies.html bu adresi dikkatlice okumanı şiddetle tavsiye ederim..
Alper Gökhan Beyler
07.11.2014 - 02:43
çok teşekkür ederim inceleyeceğimm
Profile picture for user kemalkirezci
kemalkirezci
05.11.2014 - 03:02

Window- Preferences - Android - Build kısmından aldığınız SHA1 key geçerli oluyor.

Console'da Android key ürettiğiniz zaman SHA1key;packageName şeklinde tanımlamanızı yaptınız mı?

Alper Gökhan Beyler
06.11.2014 - 11:53
evet yaptım hallettim harita çıkıyor artık ama başka sorunlar oluştu bulunduğum konumu gösteremiyorum nasıl yapabilirim ? google_map.setMyLocationEnabled(true); location = google_map.getMyLocation(); google_map.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
Kemal KİREZCİ
06.11.2014 - 12:20
Bulunduğunuz konum için öncelikle uygulamadan GPS Açık kontrolü yapmanız lazım. GPS kapalıysa açtırmalısınız ki NetworkProvider'dan son bulunduğunuz koordinatı almasın, anlık koordinatınızı alsın.
Alper Gökhan Beyler
06.11.2014 - 02:21
anladım çok teşekkür ederim deneyeceğim en son telefondan GPS açtım konumu getMyLocation ile çektim yine null geldii
Kemal KİREZCİ
07.11.2014 - 09:15
Kapalı alanlarda genelde null gelir. Bir tane refresh butonu koyup açık alanda deneyin.
picture-19298-1459404577.jpg
alper_beyler
05.11.2014 - 02:02

Italic olarak yaptıklarım harita ile alakalı kısımlar ayrıca gcm için key almıştım aynısını google map için kullanamıyor muyum sizin dediğinize göre ?

[code]

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.erploginpage"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />
    
    
    
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    
     <uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <!-- Creates a custom permission so only this app can receive its messages. -->
    <permission
        android:name="com.example.erploginpage.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.erploginpage.permission.C2D_MESSAGE" />

    <!-- This app has permission to register and receive data message. -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <!-- Permission to vibrate -->
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/home_logo"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
            
        
        <activity android:label="@string/app_name" android:name="com.example.erploginpage.LoginPage">
            <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
               
        </activity>
            
        <activity android:name="Dashboard" android:label="@string/app_name"></activity>
        <activity android:name="com.example.erploginpage.SearchCompanyName" android:label="@string/app_name" ></activity>
        <activity android:name="CallsListPage" android:label="@string/app_name"></activity>
        <activity android:name="TaskListPage" android:label="@string/app_name"></activity>
        <activity android:name="Display" android:label="@string/app_name"></activity>
        <activity android:label="@string/app_name" android:name="TimeListPage"></activity>
        <activity android:label="@string/app_name" android:name="ExpenseListPage"></activity>
        <activity android:name="AnnouncementPage" android:label="@string/app_name"></activity>
        <activity android:name="ViewAnnouncements" android:label="@string/app_name"></activity>
        <activity android:name="com.example.erploginpage.MainActivity"   android:label="@string/app_name" ></activity>
        <activity android:name="com.example.erploginpage.MyCalendarActivity"   android:label="@string/app_name" ></activity>
        
        
            
        <activity android:name="serverChangePack.serverIpChange" android:label="@string/app_name"></activity>
        
        
        <activity android:label="@string/app_name" android:name="ShowAnnouncement"></activity>
         <activity android:label="@string/app_name" android:name="DetailsContacts"></activity>
         <activity android:name="Settings" android:label="@string/app_name"></activity>
        
        
       <receiver
            android:name="com.listenserviceNotification.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="com.example.erploginpage" />
            </intent-filter>
        </receiver>
        
       <service android:name="com.listenserviceNotification.GcmIntentService" />
       
       <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
      
        
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="MY API KEY FOR GOOGLE MAPS" />

        
       
        
</application>
   
    
  
    
</manifest>

 

 

[/code]

picture-1372-1408467635.jpg
ahmtbrk
05.11.2014 - 01:53

Ayrıca gcm için server veya browser key alınıyor ama maps için android key alman lazım gcm de android key nerede kullandın gcmde proje id si kullanılıyor

Alper Gökhan Beyler
05.11.2014 - 02:19
Android key alınırken SHA-1 parmak izinini yapabilmek için cmd yi kullanmayıp direk projeden yazsam olmaz mı? Window- Preferences - Android - Build kısmında zaten yazıyor
Profile picture for user kemalkirezci
kemalkirezci
05.11.2014 - 01:42

Merhaba;

Console'da API lerin içinde "Google Maps Android API V2" var. Default'ta o kapalıdır. Açtınız mı?

Alper Gökhan Beyler
05.11.2014 - 01:54
Merhaba , evet açtım orda sorun yok
picture-7617-1421911538.jpg
sametgunduz
05.11.2014 - 12:16

Uygulamayı geliştirme aşamasında debug key kullanmalısın ayrıca google play service sdk'sının uygulamaya düzgün bir şekilde import edildiğinden ve permissionsların doğru girildiğini kontrol etmenizde fayda var.