Как я могу добавить PIN-код карты Google еще раз? - PullRequest
0 голосов
/ 05 января 2012

У меня проблема с Google Maps. Я хочу добавить пин-код, когда я касаюсь карт. Я использовал этот пост, когда делаю проект. Это ссылка на карты

Моя проблема в том, что яМожно добавить пин-код только один раз. Но я хочу добавить много времени. Я не понимаю, в чем проблема. Кто-нибудь может мне помочь?

мой код здесь:

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);


    }

} 

Ответы [ 2 ]

1 голос
/ 05 января 2012

Попробуйте изменить свой метод на это:

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();
}
0 голосов
/ 06 января 2012

Возможно, проблема в вашем классе HelloItemizedOverlays.Я думаю, что вы не заполняете его снова после создания. Вот почему вы просто получаете один пин, а затем ничего больше после первого раза.

Так как заполнение - это последний метод, который вы не можете вызвать вне класса itemizedoverlay.Вы можете создать открытый метод в своем классе HelloItemizedOverlays, который может вызывать заполнение по вашему запросу.

Нечто подобное в вашем классе 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();


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...