2014-01-24 5 views
1

나는 비슷한 질문을 여기에서 찾았으나 아무도 나를 도왔다. 사용자가 찍은 경로와 "경찰"형태의 아이콘을 보여주는 응용 프로그램이지도에서 실행됩니다. 내가 원하는 것은이 아이콘이 나 뒤에있는지도를 움직이는 것입니다. 그래서 나는 사용자의 현재 위치, 아이콘의 위치 및지도를 고려하여 새로운 점을 계산하는 방법 (스토킹)을 만들었습니다. 이 메서드는 작동하지만 문제는 응용 프로그램 아이콘을 실행하면 그의 위치가 업데이트되지 않기 때문에 한 번만 이동한다는 것입니다.Google지도에 아이콘 이동하기

public void onMyLocationChange(Location location) { 
    double latitude = location.getLatitude(); 
    double longitude = location.getLongitude(); 

    lat = String.valueOf(latitude); 
    longi = String.valueOf(longitude); 

    posCurrent = new LatLng(latitude, longitude); 
    posAtuais.add(posCurrent); 

    posInicial = posAtuais.get(0); 
    Marker marker = map.addMarker(new MarkerOptions().position(posInicial)); 

    map.moveCamera(CameraUpdateFactory.newLatLngZoom(posCurrent, 19)); 

    PolylineOptions options = new PolylineOptions().width(5).color(mudaLinhaCor(heart_rate)).geodesic(true); 
    for (int z = 0; z < posAtuais.size(); z++) { 
     LatLng point = posAtuais.get(z); 
     options.add(point); 
    } 
    line = map.addPolyline(options); 

    LatLng posPolice = stalk(posCurrent, POLICE, map); 
    Marker init = map.addMarker(new MarkerOptions().position(posPolice) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.police))); 


} 

    //A method that computes a new position 
public LatLng stalk(LatLng player,LatLng police,GoogleMap mapView){ 
    Projection projection = mapView.getProjection(); 
    Point pointInicial = new Point(); //police 
    pointInicial = projection.toScreenLocation(police); 
    Point pointFinal = new Point(); //player 
    pointFinal = projection.toScreenLocation(player); 
    double y=0.2; 
    int x=0; 

    if((pointInicial.x==pointFinal.x)){ 
     y=pointInicial.y+1; 
    }else{ 
     double m=(pointFinal.y-pointInicial.y)/(pointFinal.x-pointInicial.x); 
     double b=pointInicial.y-(m*pointInicial.x); 
     int i=1; 

     while(y != (int)y){ 
      if(pointInicial.x<pointFinal.x){ 
       x=pointInicial.x+i; 
       //System.out.println("entrou no x<xfnal: "+x); 
      } 
      else if(pointInicial.x>pointFinal.x){ 
       //System.out.println("entrou no x>xfnal"); 
       x=pointInicial.x-i; 
      } 
      y=m*x+b; 
      //System.out.println("y: : "+y); 
      i++; 
     } 
    } 
    return projection.fromScreenLocation(new Point(x, (int) y)); 
} 

누군가가 나를 도울 수 :

여기 내 코드의 일부입니다.

답변

0

내가 onMyLocationChange에 onMarkerDragStart 및 onMarkerDragEnd 전화를해야 다음 활동에

@Override 
public void onMarkerDragStart(Marker arg0) { 
    markerOptions.position(latLng); 
} 
@Override 
public void onMarkerDragEnd(Marker arg0) { 
    myMap.clear(); 
    latLng = arg0.getPosition(); 
    markerOptions.position(latLng); 
    Marker marker = myMap.addMarker(markerOptions); 


} 
+0

을 OnMarkerDragListener을 구현? 나는 이것이 무엇을하는지 잘 이해하지 못한다 ... –