0

我制作了小型静态地图应用程序,在其中我使用三个针(标记)并设置静态经度和纬度。实际上,我想在地图视图中显示位置信息显示的气球注释。当我触摸标记(引脚)时,气球注释打开并显示当前位置的信息。我的代码如下:

 **Source Code: MainActivity.java
    ----------------------------------**
    package com.example.mapapp;

    import java.util.List;
    import com.google.android.maps.*;

    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 com.google.android.maps.OverlayItem;

    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.drawable.Drawable;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class MainActivity extends MapActivity {
     MapController mpc;
     //Button hotels,theaters,bank;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
         /*   hotels = (Button)findViewById(R.id.btnhotels);
            hotels.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i = new Intent(MainActivity.this,Hotels.class);
                    startActivity(i);
                }
            });

            theaters = (Button)findViewById(R.id.btntheaters);
            theaters.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i1 = new Intent(MainActivity.this,Theaters.class);
                    startActivity(i1);
                }
            });

            bank = (Button)findViewById(R.id.btnbank);
            bank.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i2 = new Intent(MainActivity.this,Bank.class);
                    startActivity(i2);
                }
            });*/
            MapView mp = (MapView)findViewById(R.id.mapview);
            mp.setBuiltInZoomControls(true);
            mp.setSatellite(true);
            mp.setTraffic(true);
            mp.setStreetView(true);
            mpc = mp.getController();

            //for RL WebSolutions
            double rl_lat = Double.parseDouble("23.0355018");
            double rl_lon = Double.parseDouble("72.5630625");
            GeoPoint point = new GeoPoint((int)(rl_lat*1E6), (int)(rl_lon*1E6));
            mpc.animateTo(point);
            mpc.setZoom(15);
            mp.invalidate();

            List<Overlay> mapoverlays = mp.getOverlays();
            Drawable drawable = this.getResources().getDrawable(R.drawable.redpin);
            AddItemizedOverlay itemizedOverlay = new AddItemizedOverlay(drawable,this);
            OverlayItem overlayitem = new OverlayItem(point, "Rl Websolution", "Here is RL Websolutions");
            itemizedOverlay.addOverlay(overlayitem);
            mapoverlays.add(itemizedOverlay);


            //for State Bank of India
            double stb_lat = Double.parseDouble("23.066519");
            double stb_lon = Double.parseDouble("72.56956000000002");
            GeoPoint point1 = new GeoPoint((int)(stb_lat*1E6), (int)(stb_lon*1E6));
            mpc.animateTo(point1);
            mpc.setZoom(15);
            mp.invalidate();

            List<Overlay> mpoverlays = mp.getOverlays();
            Drawable d = this.getResources().getDrawable(R.drawable.poin1);
            AddItemizedOverlay itemizeOverlay = new AddItemizedOverlay(d,this);
            OverlayItem over = new OverlayItem(point1, "State Bank Of India", "Here is State Bank");
            itemizeOverlay.addOverlay(over);
            mpoverlays.add(itemizeOverlay);

            //for Navrangpura Bus Stop
            double bus_lat = Double.parseDouble("23.035626");
            double bus_lon = Double.parseDouble("72.5641536");
            GeoPoint point2 = new GeoPoint((int)(bus_lat*1E6), (int)(bus_lon*1E6));
            mpc.animateTo(point2);
            mpc.setZoom(15);
            mp.invalidate();

            List<Overlay> mboverlays = mp.getOverlays();
            Drawable d1 = this.getResources().getDrawable(R.drawable.bus);
            AddItemizedOverlay itemizOverlay = new AddItemizedOverlay(d1,this);
            OverlayItem over1 = new OverlayItem(point2, "Navrangpura Bus Stop", "Here is Bus Stop");
            itemizOverlay.addOverlay(over1);
            mboverlays.add(itemizOverlay);

        }
        protected boolean isRouteDisplayed() {
            return true;
        }

    }


    ****Here AddItemizedOverlay.java**
    -----------------------------------**
   package com.example.mapapp;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.Log;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> {
    private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
    private Context context;
    public AddItemizedOverlay(Drawable defaultMarker) {
        super(boundCenterBottom(defaultMarker));
        // TODO Auto-generated constructor stub
    }
     public AddItemizedOverlay(Drawable defaultMarker, Context context) {
         this(defaultMarker);
         this.context = context;
    }

    @Override
    protected OverlayItem createItem(int i) {
        // TODO Auto-generated method stub
        return mapOverlays.get(i);
    }

    @Override
    public int size() {
        // TODO Auto-generated method stub
        return mapOverlays.size();
    }
      @Override
      protected boolean onTap(int index) {
          OverlayItem item = mapOverlays.get(index);
          AlertDialog.Builder dialog = new AlertDialog.Builder(context);
          dialog.setTitle(item.getTitle());
          dialog.setMessage(item.getSnippet());
          dialog.show();
          return true;
      }
      public void addOverlay(OverlayItem overlay) {
          mapOverlays.add(overlay);
           this.populate();
       }
    }
4

1 回答 1

0

我认为这是您正在寻找的完美示例: http ://wptrafficanalyzer.in/blog/adding-marker-on-touched-location-of-google-maps-using-android-api-v2-with-supportmapfragment/

于 2013-01-17T04:46:32.100 回答