2017-02-24 5 views
1

おやすみ!Googleマップ強制的にGPS位置と半径の検出を閉じます(Android)

私は現在、ユーザーの現在のGPS位置が特定の場所の半径の内側にある場合、トーストに戻り、またはインテントによって別のアクティビティをアクティブにするアプリケーションを実行しています。

現在のところ、Googleマーカーでは、マーカーを検出して半径の外側か内側にあるかを判断できます。しかし、私は現在のGPS位置でそれをやろうとしたときに、Android Studioから何のエラーもなく強制的に閉じます。ここで

は、Googleマップのための私の現在のコードです:ここでは

public void onMapReady(GoogleMap googleMap) { 


    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{ 
        Manifest.permission.ACCESS_FINE_LOCATION, 
        Manifest.permission.ACCESS_COARSE_LOCATION, 
        Manifest.permission.INTERNET, 
        Manifest.permission.ACCESS_NETWORK_STATE, 
        Manifest.permission.WRITE_EXTERNAL_STORAGE, 

      }, 10); 
     } 
     return; 
    } 

    gMap = googleMap; 

     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); 
     } 


    Marker marker1 = googleMap.addMarker(
      new MarkerOptions() 
        .position(new LatLng(14.6036,120.9834)) 
        .title("Recto Station") 
    ); 

    Circle c_recto = gMap.addCircle(new CircleOptions() 
    .center(new LatLng(14.6036,120.9834)) 
    .radius(100) 
      .strokeColor(0x7F00FF00) 
      .fillColor(0x7F00FF00) 
    ); 

は働くGoogleマーカーのためのコードです:

 float[] distance_recto = new float[2]; 

    Location.distanceBetween(marker1.getPosition().latitude, marker1.getPosition().longitude, 
      c_recto.getCenter().latitude, c_recto.getCenter().longitude, distance_recto); 



    if(distance_recto[0] < c_recto.getRadius() ){ 

     Toast.makeText(getBaseContext(), "Welcome to Recto Station", Toast.LENGTH_LONG).show(); 

    } else { 
     Intent intent = new Intent(this, PollWebView.class); 
     startActivity(intent); 
     Toast.makeText(getBaseContext(), "Welcome to Recto Station", Toast.LENGTH_LONG).show(); 

をここでGoogleマーカーコードは、現在のGPSを取得するためにスワップされていますユーザーの所在地とGoogleマップの開設時に強制終了する場所:

 float[] distance_recto = new float[2]; 


    Location.distanceBetween(myLocation.getLatitude(), myLocation.getLongitude(), 
      c_recto.getCenter().latitude, c_recto.getCenter().longitude, distance_recto); 


    if(distance_recto[0] < c_recto.getRadius() ){ 

     Toast.makeText(getBaseContext(), "Welcome to Recto Station", Toast.LENGTH_LONG).show(); 

    } else { 
     Intent intent = new Intent(this, PollWebView.class); 
     startActivity(intent); 
     Toast.makeText(getBaseContext(), "Welcome to Recto Station", Toast.LENGTH_LONG).show(); 

答えて

0

答えを得るために私のコードを編集しました。

私は

LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude()); 
をグローバル化
関連する問題