"기본 위치 정보를 표시하려면 어떻게해야합니까?"라는 기본적인 Android 탐색 관련 질문을 이해하려고합니다. 내 오랜 인터넷 검색 세션의 기사 및 자습서에서 약간의 코드를 사용했습니다. 단순한 오버레이 (원 + 문자 메시지)의 표시는 작동하지만 화면의 위치가 틀립니다 (적도의 경우).현재 위치가 화면상의 좌표로 거짓으로 표시됩니다.
내 코드 설치는 작은 내부 클래스 그 implements LocationListener
을 포함하고 onLocationChanged
이벤트 핸들러는이 메서드 호출
protected void createAndShowCustomOverlay(Location newLocation)
{
double lat = newLocation.getLatitude();
double lng = newLocation.getLongitude();
// geoPointFromLatLng is an E6 converter :
// return new GeoPoint((int) (pLat * 1E6), (int) (pLng * 1E6));
GeoPoint geopoint = GeoFunctions.geoPointFromLatLng(lat, lng);
CustomOverlay overlay = new CustomOverlay(geopoint);
mapView.getOverlays().add(overlay);
mapView.getController().animateTo(geopoint);
mapView.postInvalidate();
}
지금까지 모두가 좋아 보인다, 내가 주위 디버깅했고 비를 변환 된 위도/한쌍은 괜찮습니다. E6 변형도 괜찮습니다. 여기에 CustomOverlay 클래스입니다 :
public class CustomOverlay extends Overlay
{
private static final int CIRCLERADIUS = 2;
private GeoPoint geopoint;
public CustomOverlay(GeoPoint point)
{
geopoint = point;
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
// Transfrom geoposition to Point on canvas
Projection projection = mapView.getProjection();
Point point = new Point();
projection.toPixels(geopoint, point);
// background
Paint background = new Paint();
background.setColor(Color.WHITE);
RectF rect = new RectF();
rect.set(point.x + 2 * CIRCLERADIUS, point.y - 4 * CIRCLERADIUS,
point.x + 90, point.y + 12);
// text "My Location"
Paint text = new Paint();
text.setAntiAlias(true);
text.setColor(Color.BLUE);
text.setTextSize(12);
text.setTypeface(Typeface.MONOSPACE);
// the circle to mark the spot
Paint circle = new Paint();
circle.setColor(Color.BLUE);
circle.setAntiAlias(true);
canvas.drawRoundRect(rect, 2, 2, background);
canvas.drawCircle(point.x, point.y, CIRCLERADIUS, circle);
canvas.drawText("My Location", point.x + 3 * CIRCLERADIUS, point.y + 3
* CIRCLERADIUS, text);
}
}
그것의 가장 확실히 종류의 투영 오류, 내 모든 지리적 fix'd 좌표는 적도에 결국, 그래서 주변에 던져지고 일부 0.0 값이 있기 때문에.
필요한 경우 다른 세부 정보를 제공 할 수 있습니다. 에뮬레이터, Maps API 레벨 8 (Android 2.2)에서 코드를 실행 중이며 타일이 생기고 CustomOverlay (원 + 텍스트)가 표시됩니다. 위치 (54.foo 및 8.bar와 같은 좌표가 빠져 있음).
코드베이스가 조금 오래되었을 수 있습니다. 그러면 toPixels
과 같은 프로젝션이 더 이상 필요하지 않을 수 있습니다. 몰라.
미리 감사드립니다.
입력 해 주셔서 감사합니다. 내가 코즈를 보내야하는 형식은 뭐니? 부적절한 형식의 좌표를 전송하는 것이 문제였습니다. 일반적으로 보았던 lat/lng 쌍 모두 음수 값 (예 : geo fix -82.411629 28.054553)이 있는데 왜 그런가요? – Dr1Ku
그래, 이클립스에서 내장 된 것들을 사용하면 좋은 결과가 나오지 않는다. 그것은 수정되고 올바르게 입력 된 위도/경도 쌍을 사용하여 작동합니다. 다시 한 번 감사드립니다! – Dr1Ku
아, 사실 지오 픽스는 거의 모든 지리 관련 앱이 코디를 처리하는 방식과 마찬가지로 (어둡게, 위도우가 아니라) 위도가 필요합니다. – Dr1Ku