【问题标题】:Google Maps Force Closes on GPS Location and Radius Detection (Android)谷歌地图强制关闭 GPS 位置和半径检测 (Android)
【发布时间】:2017-07-15 07:32:10
【问题描述】:

美好的一天!

我目前正在做一个应用程序,如果用户当前的 GPS 位置在某个位置的半径范围内,它将返回 toast 或通过意图激活另一个活动。

目前,使用 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)
    );

这是有效的谷歌标记的代码:

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

【问题讨论】:

    标签: android google-maps google-maps-api-3 gps location


    【解决方案1】:

    我编辑了我的代码以获得答案。

    我全球化了

    LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      相关资源
      最近更新 更多