我有关于谷歌地图的问题。我想在触摸地图时添加别针。我在做项目时使用过这篇文章。 this is maps link
我的问题是我可以只添加一次针。但我想增加很多时间。我不明白什么是问题。可以帮助我吗?
我的代码在这里:
package com.example;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import com.google.android.maps.*;
import java.util.List;
public class HelloGoogleMaps2 extends MapActivity
{
MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setSatellite(true);
mapView.isClickable();
// GeoPoint point = new GeoPoint(50443769,-71158458);
// GeoPoint point=new GeoPoint(0,0);
// AddMyPin(point);
mapView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return onTouch2(view,motionEvent);
}
});
}
public boolean onTouch2(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == 0) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) motionEvent.getX(),
(int) motionEvent.getY());
GeoPoint gp= new GeoPoint((int)motionEvent.getX(),(int)motionEvent.getY());
AddMyPin(p);
}
return false;
}
@Override
protected boolean isRouteDisplayed()
{
return false;
}
public void AddMyPin(GeoPoint point)
{
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.bubble);
HelloItemizedOverlays itemizedoverlay = new HelloItemizedOverlays(drawable,this);
OverlayItem overlayitem = new OverlayItem(point,null,null);
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}
}
答案 0 :(得分:1)
尝试将您的方法更改为:
public void AddMyPin(GeoPoint point)
{
Drawable drawable = this.getResources().getDrawable(R.drawable.bubble);
HelloItemizedOverlays itemizedoverlay = new HelloItemizedOverlays(drawable,this);
OverlayItem overlayitem = new OverlayItem(point,null,null);
itemizedoverlay.addOverlay(overlayitem);
mapView.getOverlays().add(itemizedoverlay);
//this will cause the map to redraw with the new overlay
mapView.invalidate();
}
答案 1 :(得分:0)
问题可能来自你的HelloItemizedOverlays类。 我认为你创建后不会再次填充它。这就是为什么你在第一次获得一个引脚然后没有别的东西。
因为populate是一个你不能在itemizedoverlay类之外调用的最终方法。 您可以在HelloItemizedOverlays类中创建一个公共方法,该方法可以在您的请求中调用populate。
HelloItemizedOverlays类中的类似内容。
public void populateList() {
populate();
}
在你的AddMyPin方法中。
public void AddMyPin(GeoPoint point)
{
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.bubble);
HelloItemizedOverlays itemizedoverlay = new HelloItemizedOverlays(drawable,this);
OverlayItem overlayitem = new OverlayItem(point,null,null);
itemizedoverlay.addOverlay(overlayitem);
itemizedoverlay.populateList();
mapOverlays.add(itemizedoverlay);
mapView.invalidate();
}