标记不在htc的地图上显示

时间:2011-12-30 08:22:59

标签: android google-maps marker

我坚持这个,我已经尝试了所有可能但没有成功。我已经创建了简单的应用程序与地图进行测试,用户可以简单地触摸地图和那个地方放置标记。这将在除htc设备之外的所有设备中成功运行。我不知道如何为mapview实现onTouch事件

这是我的onTouch代码

private class MarkerOverlay extends Overlay{        
    private boolean isMove;
    @Override
    public boolean onTouchEvent(MotionEvent e, MapView mapView) {           
        final int x = (int) e.getX();
        final int y = (int) e.getY();
        if(e.getAction()==1){
            if(!isMove){
                geopoint = mapView.getProjection().fromPixels(x, y);
                OverlayItem overlayItem = new OverlayItem(geopoint, "Title", "Description");
                if(mapOverlay.m_overlays.size()>=1){
                    mapOverlay.clearOverlayAll();
                }
                mapOverlay.addOverlay(overlayItem);
                if(!mapView.getOverlays().contains(mapOverlay))
                    mapView.getOverlays().add(mapOverlay);

                mapView.invalidate();
                Toast.makeText(SimpleMapMarkerActivity.this, "in press", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(SimpleMapMarkerActivity.this, "out press", Toast.LENGTH_SHORT).show();
            }
        }else if(e.getAction()==MotionEvent.ACTION_DOWN)
            isMove = false;
        else if(e.getAction()==MotionEvent.ACTION_MOVE)
            isMove = true;

        return super.onTouchEvent(e, mapView);
    }
}

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我不确定它是否能解决你的htc问题。但这就是我所做的:

我已经覆盖了dispatchTouchEvent。它适用于我的三星Galaxy s2。

    @Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    // TODO Auto-generated method stub
    if(ev.getAction() == MotionEvent.ACTION_DOWN){
        xPos = ev.getX();
        yPos = ev.getY();
    }
    if (ev.getAction() == MotionEvent.ACTION_UP){
        if (xPos==ev.getX() && yPos == ev.getY()){
        Log.i(LOG_TAG, "Calling onTouch from dispatchTouchEvent.");
            onTouch(mapView, ev);
        }
    }
    return super.dispatchTouchEvent(ev);
}

我在mapActivity中这样做。不在overLay。

答案 1 :(得分:0)

<强> MapMarkerExample

此示例显示如何在地图上绘制可移动标记。你可以打开并放下标记来改变它的位置。可以在任何需要用户输入地图位置的应用程序中使用。

算法:

1。)通过File-&gt;创建一个新项目。新 - &gt; Android Project将其命名为MapMarkerExample。 2.)您将在main.xml和android清单文件中看到一些默认代码。 3.)为您的清单文件添加Internet权限或在android.manifest文件中写入以下内容:

http://www.edumobile.org/android/android-apps/mapmarkerexample/

答案 2 :(得分:0)

我得到了harism给出的解决方案和解决方案

每当您使用地图实施标记时,就像点击地图并显示市场一样,然后实施onTap(GeoPoint g, MapView mapview)

如果您想要像拖放一样按照用户移动标记,那么请使用onTouch()来实现。对于onTouch()和拖放等移动标记,请检查此链接

http://www.edumobile.org/android/android-apps/mapmarkerexample/