由网友(时光与爱终年不遇)分享简介:在这里,我已经使用谷歌地图和叠加。我已经使用图钉的图像指向的GeoPoint。 我想成立一个 OnClickListener 事件的图钉。当用户触摸针,我想敬酒的消息。下面是code。 进口的java.util.List;进口com.google.android.maps.GeoPoint;进口com.googl...
在这里,我已经使用谷歌地图和叠加。我已经使用图钉的图像指向的GeoPoint。
我想成立一个 OnClickListener
事件的图钉。当用户触摸针,我想敬酒的消息。下面是code。
进口的java.util.List;
进口com.google.android.maps.GeoPoint;
进口com.google.android.maps.MapActivity;
进口com.google.android.maps.MapController;
进口com.google.android.maps.MapView;
进口com.google.android.maps.Overlay;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.graphics.Canvas;
进口android.graphics.Point;
进口android.os.Bundle;
进口android.widget.Toast;
公共类Googlemap1_6Activity扩展MapActivity
{
/ **第一次创建活动时调用。 * /
图形页面图形页面;
MapController MC;
的GeoPoint磷;
类Mapoverlay扩展com.google.android.maps.Overlay
{
@覆盖
公共布尔平局(画布油画,图形页面图形页面,布尔阴影,
时长)
{
// TODO自动生成方法存根
super.draw(帆布,图形页面,阴影,时);
点screenPts =新的点();
MapView.getProjection()在toPixels(对,screenPts)。
BMP位= BitmapFactory.de codeResource(getResources(),R.drawable.pushpin2);
canvas.drawBitmap(BMP,screenPts.x,screenPts.y-26,空);
返回true;
}
@覆盖
公共布尔中的onTap(GeoPoint对象PL,图形页面图形页面){
// TODO自动生成方法存根
如果(pl.equals(P))
{
Toast.makeText(getBaseContext(),
这是国际机场,
Toast.LENGTH_LONG).show();
}
返回super.onTap(PL,图形页面);
}
}
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
串lat_coordinates [] = {27.700556};
串lng_coordinates [] = {85.3630};
双纬度= Double.parseDouble(lat_coordinates [0]);
双LNG = Double.parseDouble(lng_coordinates [0]);
P =新的GeoPoint(
(INT)(LAT * 1E6)
(中间体)(LNG * 1E6));
图形页面=(图形页面)findViewById(R.id.mapView);
MC = mapView.getController();
mapView.setBuiltInZoomControls(真正的);
mc.setZoom(10);
mc.animateTo(对);
Mapoverlay MapOverlay =新Mapoverlay();
名单<覆盖> listofOverlays =调用MapView.getOverlays();
listofOverlays.clear();
listofOverlays.add(MapOverlay);
mapView.invalidate();
}
@覆盖
保护的布尔isRouteDisplayed(){
// TODO自动生成方法存根
返回false;
}
}
解决方案
您重写自己的叠加,所以你要自己处理的标签。为什么不使用 ItemizedOverlay 。重写 onTab(INT指数)那里,你做。 它也有一个有用的则hitTest 方法。
Here I have used google map and an overlay. I have used an image of pushpin to point to the GeoPoint.
I want to set an OnClickListener
event for the push pin. When user touches the pin, I want to toast a message. Below is the code.
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.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Bundle;
import android.widget.Toast;
public class Googlemap1_6Activity extends MapActivity
{
/** Called when the activity is first created. */
MapView mapView;
MapController mc;
GeoPoint p;
class Mapoverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
long when)
{
// TODO Auto-generated method stub
super.draw(canvas, mapView, shadow, when);
Point screenPts =new Point();
mapView.getProjection().toPixels(p, screenPts);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pushpin2);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-26, null);
return true;
}
@Override
public boolean onTap(GeoPoint pl, MapView mapView) {
// TODO Auto-generated method stub
if(pl.equals(p))
{
Toast.makeText(getBaseContext(),
"This is International Airport",
Toast.LENGTH_LONG).show();
}
return super.onTap(pl, mapView);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String lat_coordinates[] ={"27.700556"};
String lng_coordinates[] ={"85.3630"};
Double lat = Double.parseDouble(lat_coordinates[0]);
Double lng = Double.parseDouble(lng_coordinates[0]);
p = new GeoPoint(
(int) (lat*1E6),
(int) (lng*1E6));
mapView = (MapView) findViewById(R.id.mapView);
mc=mapView.getController();
mapView.setBuiltInZoomControls(true);
mc.setZoom(10);
mc.animateTo(p);
Mapoverlay MapOverlay = new Mapoverlay();
List<Overlay> listofOverlays = mapView.getOverlays();
listofOverlays.clear();
listofOverlays.add(MapOverlay);
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
解决方案
You Override your own Overlay, so you have to handle Tabs yourself. Why not using ItemizedOverlay. Override the onTab(int index) there and you are done. It has also a useful hitTest Method.
相关推荐
最新文章