【问题标题】:polyline not visible in google maps折线在谷歌地图中不可见
【发布时间】:2017-10-02 07:35:24
【问题描述】:

我正在尝试在谷歌地图中添加连接一组点的折线。当我构建应用程序时,我没有收到任何错误但折线没有出现。如果我调用 isvisible() 方法它返回 true。请帮助

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

}

【问题讨论】:

    标签: android google-maps google-polyline


    【解决方案1】:

    问题出在

    googleMap.setMyLocationEnabled(true);
    

    行,因为您可能没有将ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION 授予您的应用程序。您应该通过 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 文件。你得到了类似的东西:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 2011-07-02
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多