2014-04-16 5 views
11

मैं अपने वर्तमान स्थान पर कुछ स्थानों के बीच की दूरी की गणना करने के लिए एक प्रोग्राम बनाना चाहता हूं, लेकिन मेरा googleMap.getMyLocation(); ठीक से काम नहीं करता है।googleMap.getMyLocation(); वर्तमान स्थान नहीं मिल सकता

googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
googleMap.setMyLocationEnabled(true); 
googleMap.getUiSettings().setCompassEnabled(false); 
mylocation = googleMap.getMyLocation(); 
direction = new GMapV2Direction(); 

LatLng from, to; 
from = new LatLng(-7.26071409, 112.80674726); 
for(int i=0; i<lat.length; i++){  
    to = new LatLng(lat[i], lon[i]); 
    doc = direksi.getDocument(from, to, GMapV2Direction.MODE_DRIVING); 
    distance[i] = (double)direction.getDistanceValue(doc)/1000; 
} 

मैंने लैट [] और लॉन [] में कुछ स्थानों के अक्षांश और देशांतर को बचाया। लेटलिंग 'से' मेरा स्थान है और 'टू' मेरा गंतव्य स्थान है। समस्या दिखाई देते हैं जब मैं GoogleMaps खोले बिना

from = new LatLng(-7.26071409, 112.80674726); 
to 
from = new LatLng(mylocation.getLatitude(), mylocation.getLongitude()); 

मैं गणना करना चाहते हैं बदल जाते हैं। जब मैं मानचित्र बटन को पॉप अप विंडो के रूप में स्पर्श करता हूं तो Google मानचित्र दिखाई देंगे। इसलिए गणना खोलने googlemap

कृपया मेरी मदद

+0

getMyLocation(), [इस विधि को बहिष्कृत किया गया है] (https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html)। इसके बजाय LocationClient का उपयोग करें। – AlexDG

+0

क्या आप Google मानचित्र v2 का उपयोग कर रहे हैं? –

+0

@Alex मुझे नहीं पता कि LocationClient का उपयोग कैसे करें। क्या आप विस्तार से समझा सकते हैं? – user3506223

उत्तर

21

इस प्रयास करें पाने के लिए LocationClient और कैसे के बारे में जानकारियां प्राप्त कर सकते हैं ... मुझे आशा है कि यह आप

LocationManager locationManager = (LocationManager) 
     getSystemService(Context.LOCATION_SERVICE); 
Criteria criteria = new Criteria(); 

Location location = locationManager.getLastKnownLocation(locationManager 
     .getBestProvider(criteria, false)); 
double latitude = location.getLatitude(); 
double longitude = location.getLongitude(); 
+0

हाँ का उपयोग कर रहा हूं ... tq ... – user3506223

3

getMyLocation(), this method is deprecated बिना नहीं होगा। इसके बजाय LocationClient का उपयोग करें।

आप वर्तमान स्थान here

6

की मदद हो जाएगा यह आपके लिए मेरी कोड है, मुझे आशा है कि यह आपकी मदद करता है ... यदि आप सोचते हैं, तो इसे संपादित करें, यह सही सिंटैक्सिस के साथ नहीं है ...

एंड्रॉइड 4.x और 5.x और 6.x के लिए यह काम, मैं एंड्रॉइड 7

में इसका परीक्षण नहीं करता
//I use this like global var to edit or get informacion about google map 
GoogleMap gMap; 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    gMap = googleMap; 

if (ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
         ActivityCompat.requestPermissions(Activity_Map.this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1); 
        }else{ 
         if(!gMap.isMyLocationEnabled()) 
          gMap.setMyLocationEnabled(true); 

         LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
         Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

         if (myLocation == null) { 
          Criteria criteria = new Criteria(); 
          criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
          String provider = lm.getBestProvider(criteria, true); 
          myLocation = lm.getLastKnownLocation(provider); 
         } 

         if(myLocation!=null){ 
          LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude()); 
          gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 14), 1500, null); 
         } 
        } 

} 
+0

धन्यवाद। यह मेरे लिए काम करता है। और यह एक अच्छा तरीका है। –

संबंधित मुद्दे