移动标记丢失

时间:2016-11-19 15:40:30

标签: android google-maps google-maps-markers

标记未显示。它也没有抛出任何错误。当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);
                }
            }
        }
    });
}

}

0 个答案:

没有答案