지도에 아이콘이 표시되어있는 한 아이콘을 그려야합니다. 나는 거의 다 왔다고 생각한다. 다음은 코드입니다.지도에 그림 아이콘이 표시되어 있습니다.
package com.example.googledemo4;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
public class GoogleDemo4 extends MapActivity{
MapController mc;
MapView mapView;
GeoPoint g;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_demo4);
mapView=(MapView) findViewById(R.id.MapView);
mapView.setBuiltInZoomControls(true);
mc=mapView.getController();
List<Overlay> overlays = mapView.getOverlays();
GeoPoint geoPoint = new GeoPoint(18533000,73850000);
MapOverlay4 mapOverlay = new MapOverlay4(geoPoint,mapView,this);
overlays.add(mapOverlay);
mc.animateTo(geoPoint);
mc.setZoom(17);
geoPoint=g;
mapView.setOnTouchListener(touch);
mapView.postInvalidate();
}
private OnTouchListener touch = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
mapView=(MapView) findViewById(R.id.MapView);
if (event.getAction() == 1) {
GeoPoint geoPoint = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
g=geoPoint;
Toast.makeText(getBaseContext(),
geoPoint.getLatitudeE6()/1E6 + "," +
geoPoint.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
return true;
}
};
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
그리고 사용자 정의 오버레이 생성 : 나는 약간의 위도와 길이에 GeoPoint의 초기화 때문에
package com.example.googledemo4;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.webkit.WebView.FindListener;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
public class MapOverlay4 extends Overlay{
GeoPoint p ;
MapView mapView;
Context context;
public MapOverlay4(GeoPoint geoPoint, MapView mapView, Context context){
this.mapView=mapView;
this.p=geoPoint;
this.context=context;
}
public void draw(Canvas canvas, MapView mapView, boolean flag) {
// TODO Auto-generated method stub
super.draw(canvas, mapView, flag);
//---translate the GeoPoint to screen pixels---
mapView=this.mapView;
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(
this.context.getResources(), R.drawable.ic_launcher);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
}
}
이 코드는 처음에 아이콘을 그립니다합니다. 그러나지도가 만져지면 아무 일도 일어나지 않습니다. 지도가 지포 포인트를 터치 할 때마다 변경된 지오 포인트가 오버레이에 제공 될 때마다 나는 생각했습니다.
안부
효과가있었습니다. 고맙습니다. – tsogtoo
위대한 당신이 그것을 정렬! – Gridtestmail