代码之家  ›  专栏  ›  技术社区  ›  user7386813

Android多标记未在地图上绘制

  •  1
  • user7386813  · 技术社区  · 8 年前

    SharedPreferences sharedPref = getPreferences( Context.MODE_PRIVATE );
            SharedPreferences.Editor editor = sharedPref.edit();
    
            editor.putLong("key_lat", Double.doubleToRawLongBits( marker1.getPosition().latitude ));
            editor.putLong( "key_lon", Double.doubleToRawLongBits( marker1.getPosition().longitude ));
    
            editor.putLong("lock_lat", Double.doubleToRawLongBits( marker2.getPosition().latitude ));
            editor.putLong("lock_lon", Double.doubleToRawLongBits( marker2.getPosition().latitude ));
    
            editor.apply();
    

    当用户再次登录应用程序时,如果后台运行围栏服务,则必须显示前一个围栏,即地图中的两个围栏坐标,但仅显示第一个标记

     @Override
        public void onConnected(@Nullable Bundle bundle) {
            Toast.makeText(getApplicationContext(),"GoogleApi Connection Success..",Toast.LENGTH_SHORT).show();
            getCurrentLocation();
            if (isMyServiceRunning(GpsReadingService.class)){
                recoverGeofenceMarker();
            }}}
    
    
    
    // Recovering last Geofence marker
        private void recoverGeofenceMarker() {
            Log.d(TAG, "recoverGeofenceMarker");
            SharedPreferences sharedPref = getPreferences( Context.MODE_PRIVATE );
    
    
            if ( sharedPref.contains( "key_lat" ) && sharedPref.contains( "key_lon" )&& sharedPref.contains("lock_lat")&&sharedPref.contains("lock_lon")) {
                double alat = Double.longBitsToDouble( sharedPref.getLong( "key_lat", -1 ));
                double alon = Double.longBitsToDouble( sharedPref.getLong( "key_lon", -1 ));
                LatLng slatLng = new LatLng( alat, alon );
    
                double blat = Double.longBitsToDouble( sharedPref.getLong( "lock_lat", -1 ));
                double blon = Double.longBitsToDouble( sharedPref.getLong( "lock_lon", -1 ));
                LatLng elatLng=new LatLng(blat,blon);
    
                double area_cov=Double.parseDouble(pref.getString("area_cov","350.012"));
    
                System.out.println("Saved Latlong values are---------------------------------->"+alat+","+alon+"\t"+area_cov);
    
                latlngs.add(slatLng);latlngs.add(elatLng);
    
                for (LatLng point : latlngs) {
                    options.position(point);
                    options.title("someTitle");
                    options.snippet("someDesc");
                    mMap.addMarker(options);
                }
    
                CircleOptions circleOptions = new CircleOptions()
                        .center( slatLng)
                        .strokeColor(Color.argb(100, 150,150,150))
                        .fillColor( Color.argb(50, 70,70,70) )
                        .radius( area_cov );
                geoFenceLimits = mMap.addCircle( circleOptions );
    
    
    
            }
        }
    

    你能帮我一下吗..我已经试过这个链接了, Link 1

    1 回复  |  直到 8 年前
        1
  •  0
  •   user7386813 user7386813    8 年前

    我一直很懒,最后我发现了我编写这个代码的问题所在

    editor.putLong("lock_lat", Double.doubleToRawLongBits( marker2.getPosition().latitude ));
            editor.putLong("lock_lon", Double.doubleToRawLongBits( marker2.getPosition().latitude ));
    

    而不是这个

    editor.putLong("lock_lat", Double.doubleToRawLongBits( marker2.getPosition().latitude ));
    editor.putLong("lock_lon", Double.doubleToRawLongBits( marker2.getPosition().longitude ));
    

    感谢所有观众。。