2017-10-02 3 views
0

Googleマップでポイントのグループを接続するポリラインを追加しようとしています。アプリを構築するときにエラーは発生しませんが、ポリラインは表示されません。isvisible()メソッドを呼び出すと、あなたはおそらくあなたのアプリへACCESS_FINE_LOCATIONACCESS_COARSE_LOCATIONを許可していなかったので、true.PleaseヘルプポリラインがGoogleマップに表示されない

@Override 
public void onMapReady(GoogleMap googleMap) { 
    // new LongOperation().execute(""); 

    /* googleMap.setMapStyle(
      MapStyleOptions.loadRawResourceStyle(
        this, R.raw.mapjson));*/ 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 
     return; 
    } 
    googleMap.setMyLocationEnabled(true); 
    googleMapnew = googleMap; 
    Polyline polyline1 = googleMap.addPolyline(new PolylineOptions() 
      .clickable(true) 
      .add(
        new LatLng(13.034063, 77.567006), 
        new LatLng(13.034087, 77.568629), 
        new LatLng(13.034202, 77.569431), 
        new LatLng(13.034371, 77.570103), 
        new LatLng(13.034535, 77.570121), 
        new LatLng(13.036526, 77.570489), 
        new LatLng(13.037719, 77.570545), 
        new LatLng(13.038252, 77.570039), 
        new LatLng(13.039849, 77.570028), 
        new LatLng(13.040153, 77.569229), 
        new LatLng(13.040640, 77.568512), 
        new LatLng(13.041071, 77.567996), 
        new LatLng(13.041780, 77.567894)) 
    .color(Color.GREEN) 
    .width(66)); 
    Log.e("polylog", String.valueOf(polyline1.isVisible())); 
    Log.e("polylog", String.valueOf(polyline1)); 

} 

答えて

2

問題は、

googleMap.setMyLocationEnabled(true); 

ラインです。あなたは、あなたのAndroidデバイスのApplicationsメニューを経由してアプリケーションに手動で付与またはチェック実装し、Official Documentationのように権限を付与すると、例えば、Daniel Nugentthis答え、そのようなことする必要があります

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { 

    private static final int LOCATION_PERMISSION_REQUEST_CODE = 101; 
    private GoogleMap mGoogleMap; 
    private MapFragment mMapFragment; 

    private void makeLocationPermissionRequest() { 
     ActivityCompat.requestPermissions(this, 
       new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mMapFragment = (MapFragment) getFragmentManager() 
       .findFragmentById(R.id.map_fragment); 
     mMapFragment.getMapAsync(this); 
    } 

    private void showPolyline() { 

     mGoogleMap.setMyLocationEnabled(true); 

     Polyline polyline1 = mGoogleMap.addPolyline(new PolylineOptions() 
       .clickable(true) 
       .add(
         new LatLng(13.034063, 77.567006), 
         new LatLng(13.034087, 77.568629), 
         new LatLng(13.034202, 77.569431), 
         new LatLng(13.034371, 77.570103), 
         new LatLng(13.034535, 77.570121), 
         new LatLng(13.036526, 77.570489), 
         new LatLng(13.037719, 77.570545), 
         new LatLng(13.038252, 77.570039), 
         new LatLng(13.039849, 77.570028), 
         new LatLng(13.040153, 77.569229), 
         new LatLng(13.040640, 77.568512), 
         new LatLng(13.041071, 77.567996), 
         new LatLng(13.041780, 77.567894)) 
       .color(Color.GREEN) 
       .width(66)); 

     mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(13.034063, 77.567006), 12)); 
    } 

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

     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      int locationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 
      if (locationPermission != PackageManager.PERMISSION_GRANTED) { 
       makeLocationPermissionRequest(); 
      } else { 
       showPolyline(); 
      } 
     } else { 
      showPolyline(); 
     } 
} 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case LOCATION_PERMISSION_REQUEST_CODE: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        showPolyline(); 
       } else { 
       } 
       return; 
      } 
     } 
    } 

} 

をそして忘れてはいけませんあなたのAndroidManifest.xmlファイルに

を追加します。そして、あなたはそのようなものを持っています:

enter image description here

関連する問題