Android 多个标记未绘制在地图上
Android mutiple markers not plotting on map
我正在为 android 开发一个基于地理围栏的应用程序,在该应用程序上我正在保存由
用户刚刚创建的围栏
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();
其中 marker1 是围栏圆心,marker2 描绘了外边界。
每当用户登录回应用程序时,如果后台有围栏服务 运行,则必须显示前一个围栏,即地图中的两个围栏坐标,但只显示第一个标记
@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,但是只显示了第一个标记
我一直很懒,最后我发现我编码的问题是什么
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 ));
现在它显示了两个标记..!!
感谢所有观众..
我正在为 android 开发一个基于地理围栏的应用程序,在该应用程序上我正在保存由
用户刚刚创建的围栏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();
其中 marker1 是围栏圆心,marker2 描绘了外边界。 每当用户登录回应用程序时,如果后台有围栏服务 运行,则必须显示前一个围栏,即地图中的两个围栏坐标,但只显示第一个标记
@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,
我一直很懒,最后我发现我编码的问题是什么
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 ));
现在它显示了两个标记..!! 感谢所有观众..