2014-04-21 5 views
1

반환되는 위도와 경도를 사용하여 네트워크 제공 업체와 gps에서 위치를 얻으려고합니다.지도에 마커를 배치하고 있습니다. 내가 네트워크 공급자 애플 리케이션과 함께 노력했을 때 fine.But 때 GPS에서 위치를 얻으려고, 처음으로 null을 반환하고입니다. 그 후에 정확한 위치 결과를 제공합니다. 이걸 없애는 법.?GPS 제공자가 처음에 현재 위치를 표시하지 않습니다.

몇 가지 사소한 변화가 있다고 생각합니다. 제발 해결해주세요.

이것은 내가이 일을 수행하는 방법입니다.

public class MapActivity extends Activity implements LocationListener { 


      private GoogleMap gMap; 
      private LocationManager locationManager; 
      private String provider; 
      boolean gps_enabled = false; 
      boolean netwrk_enabled = false; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_map); 
       gMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
         .getMap(); 

    //Focussing india on starting map 
       gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
         23.40276491, 77.51953125), 5)); 

       locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000L, 10F, this); 

       gps_enabled = locationManager 
         .isProviderEnabled(LocationManager.GPS_PROVIDER); 

       netwrk_enabled = locationManager 
         .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
       if (gps_enabled) 
        provider = LocationManager.GPS_PROVIDER; 
       else 
        provider = LocationManager.NETWORK_PROVIDER; 

       Criteria criteria = new Criteria(); 
       provider = locationManager.getBestProvider(criteria, false); 

       Location location = locationManager.getLastKnownLocation(provider); 



    CameraPosition cp = new CameraPosition(new LatLng(
         location.getLatitude(), location.getLongitude()), 14, 40, 90); 
       gMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp), 4000, 
         null); 
       gMap.addMarker(new MarkerOptions().position(
         new LatLng(location.getLatitude(), location.getLongitude())) 
         .title("I am here")); 

       if (location != null) { 

        if (provider == LocationManager.GPS_PROVIDER) 
         Toast.makeText(getApplicationContext(), "taking from gps", 
           Toast.LENGTH_SHORT).show(); 

        else if (provider == LocationManager.NETWORK_PROVIDER) 
         Toast.makeText(getApplicationContext(), "taking from network", 
           Toast.LENGTH_SHORT).show(); 

        new HttpGetTask().execute(); 
       } 

      } 

      @Override 
      protected void onPause() { 
       // TODO Auto-generated method stub18d1:d002 
       super.onPause(); 
       locationManager.removeUpdates(this); 
      } 

      @Override 
      protected void onResume() { 
       // TODO Auto-generated method stub 
       super.onResume(); 
       locationManager.requestLocationUpdates(provider, 400, 1, this); 
      } 

      @Override 
      public boolean onCreateOptionsMenu(Menu menu) { 
       // Inflate the menu; this adds items to the action bar if it is present. 
       getMenuInflater().inflate(R.menu.map, menu); 
       return true; 
      } 

      @Override 
      public void onLocationChanged(Location location) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderDisabled(String provider) { 
       // TODO Auto-generated method stub 
       Toast.makeText(this, "Disabled provider " + provider, 
         Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onProviderEnabled(String provider) { 
       // TODO Auto-generated method stub 

       Toast.makeText(this, "Enabled new provider " + provider, 
         Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) { 
       // TODO Auto-generated method stub 

      } 

      private class HttpGetTask extends AsyncTask<Void, Void, String> { 

     //Passing latitude and longitude here to get lat longs from my remote server. 
     // using json parsing i am placing multiple markers here. 


      } 

     } 

답변

0

코드 작성은 모두 글이지만, 응용 프로그램 시작시 LocationManager를 호출하지 않습니다. onCreate() 메소드의 코드에서 다음 줄을 주석 처리하면됩니다.

//Location location = locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000L, 10F, this); 

의 주석 라인 위하게 제공에 대한 변경 다음

Location location = locationManager.requestLocationUpdates(provider, 5000L, 10F, this); 
+0

만 locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 5000L, 10F,이)를 의미한다; 쓰다.?? 왜냐하면 이미 위치 변수를 초기화했기 때문입니다. – Aparichith

+0

@ h.APP.y 예 .... – Kedarnath

+0

잘 작동하지만 GPS에만 해당됩니다. 내가 네트워크 공급자 애플 리케이션에서 위치를 얻으려고하면 충돌이 발생합니다. – Aparichith

관련 문제