응용 프로그램의 일부분에는 Google지도가 필요합니다. 사용자가 edittext에 검색 문자열을 입력 한 다음 검색 버튼을 누르면지도가 첫 번째 결과로 움직이게 할 수 있습니다.버튼 클릭시 유효한 지오 포인트에 애니메이션을 적용 할 수 없습니다.
버튼을 누르면 응용 프로그램이 첫 번째 결과를 검색하고이를 geopoint에 넣음으로써 프로그램의 일부가 작동합니다. 하지만 그 지점에 애니메이션을 적용하려고하면 응용 프로그램이 충돌합니다.
다음은 "Dalvík, Iceland"위치로 성공적으로 이동하는 onCreate 기능입니다.
public class LocationPicker extends MapActivity {
static GeoPoint point;
static MapController mc;
static MapView mapView;
private EditText location;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location_picker);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
location = (EditText)findViewById(R.id.locationString);
mc = mapView.getController();
String tmp = "Dalvík, Iceland";
try {
point = searchLocation(tmp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mc.animateTo(point);
mc.setZoom(14);
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
버튼 클릭에 대한 코드가 명확하고 System.out.println (포인트)이 유효한 포인트를 인쇄합니다. 하지만 여전히 버튼을 클릭하면 응용 프로그램이 충돌합니다. 다음과 같이
public void search(View v) throws IOException{
GeoPoint tmpPoint = searchLocation(location.getText().toString());
System.out.println(tmpPoint);
if(tmpPoint != null){
mc.animateTo(tmpPoint);
mapView.invalidate();
}
}
그리고 searchLocation 기능은 다음과 같습니다
public GeoPoint searchLocation (String searchString) throws IOException{
Geocoder geo = new Geocoder(this);
List<Address> addr;
addr = geo.getFromLocationName(searchString, 10);
if(!addr.isEmpty()){
Address loc = addr.get(0);
GeoPoint point = new GeoPoint((int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
return point;
}
else {
return null;
}
}
그래서 명확하게 onclick을 "검색"기능에서 뭔가 잘못하고있는 중이 야 summerize 할 수 있습니다.
어떤 아이디어가 잘못 되었나요?
사실, 실제로 방금 변수 이름이 기존 변수 지점과 충돌하지 않도록 변경했습니다. 결과의 위도와 경도를 인쇄하고 유효한 점을 보여주는 디버깅을 일부 만들었습니다. 그래서 내가 염려하는 한 내 tmpPoint는 유효한 geoPoint이지만 애니메이션을 만들려고 할 때 프로그램이 계속 충돌합니다. –