标记未显示。它也没有抛出任何错误。当JSON对象正在更新时,我正试图让标记在地图上移动。我究竟做错了什么?我找不到与我相同问题的其他人
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(map);
List<MarkerOptions> markerOptions = new ArrayList<>();
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(200, 50, conf);
Canvas canvas = new Canvas(bmp);
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
public void animateMarker(final Marker marker, final LatLng toPosition,
final boolean hideMarker) {
MapFragment mapFragment = new MapFragment();
mapFragment.getMapAsync(this);
final Handler handler = new Handler() {
};
final long start = SystemClock.uptimeMillis();
Projection proj = mMap.getProjection();
Point startPoint = proj.toScreenLocation(marker.getPosition());
final LatLng startLatLng = proj.fromScreenLocation(startPoint);
final long duration = 500;
final Interpolator interpolator = new LinearInterpolator();
handler.post(new Runnable() {
@Override
public void run() {
jobj = jsonparser.makeHttpRequest("http://api.wheretheiss.at/v1/satellites/25544");
try {
Double longit = jobj.getDouble("longitude");
Double lat = jobj.getDouble("latitude");
marker.setTitle("ISS");
marker.setPosition(new LatLng(lat, longit));
CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(lat, longit));
CameraUpdate zoom = CameraUpdateFactory.newLatLngZoom(new LatLng(lat, longit),3);
googleMap.animateCamera(center);
googleMap.animateCamera(zoom);
} catch (JSONException e) {
e.printStackTrace();
}
long elapsed = SystemClock.uptimeMillis() - start;
float t = interpolator.getInterpolation((float) elapsed
/ duration);
if (t < 1.0) {
// Post again 16ms later.
handler.postDelayed(this, 16);
} else {
if (hideMarker) {
marker.setVisible(false);
} else {
marker.setVisible(true);
}
}
}
});
}
}