• ANDROID_MARS学习笔记_S03_008_GOOGLEMAP2


    一、简介

    二、代码
    1.xml
    (1)main.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:layout_width="fill_parent"
     5     android:layout_height="fill_parent"
     6     >
     7 <com.google.android.maps.MapView
     8         android:id="@+id/mapViewId"
     9         android:layout_width="fill_parent"
    10         android:layout_height="fill_parent"
    11         android:enabled="true"
    12         android:clickable="true"
    13         android:apiKey="0pkT0EYxPi2VZ5beDaJ0g08aCtWGmKTFnOvj6iw"
    14         />
    15 </LinearLayout>

    (2)AndroidManifest.xml

    1 <uses-permission android:name="android.permission.INTERNET" />

    2.java
    (1)MainActivity.java

     1 package com.se7en;
     2 
     3 import java.util.List;
     4 
     5 import android.graphics.drawable.Drawable;
     6 import android.os.Bundle;
     7 
     8 import com.google.android.maps.GeoPoint;
     9 import com.google.android.maps.MapActivity;
    10 import com.google.android.maps.MapView;
    11 import com.google.android.maps.Overlay;
    12 import com.google.android.maps.OverlayItem;
    13 
    14 public class MainActivity extends MapActivity {
    15     /** Called when the activity is first created. */
    16     @Override
    17     public void onCreate(Bundle savedInstanceState) {
    18         super.onCreate(savedInstanceState);
    19         setContentView(R.layout.main);
    20         MapView mapView = (MapView)findViewById(R.id.mapViewId);
    21         //设置mapView显示用于缩放的工具条
    22         mapView.setBuiltInZoomControls(true);
    23         
    24         Drawable drawable = getResources().getDrawable(R.drawable.index);
    25         FirstOverlay firstOverlay = new FirstOverlay(drawable,this);
    26       //创建一个GeoPoint对象,用于通过经纬度指定地图上的一个点
    27         GeoPoint point = new GeoPoint(19240000,-99120000);
    28         //创建一个OverlayItem对象,代表图层上的一个标记
    29         OverlayItem overlayItem = new OverlayItem(point,"hola,mundo!","I'm in china!");
    30         firstOverlay.addOverlay(overlayItem);
    31 
    32         //调用MapView对象的getOverlays(),得到所有的图层对象
    33         List<Overlay> mapOverlays = mapView.getOverlays();
    34         mapOverlays.add(firstOverlay);
    35     }
    36 
    37     @Override
    38     protected boolean isRouteDisplayed() {
    39         // TODO Auto-generated method stub
    40         return false;
    41     }
    42 }

    (2)FirstOverlay.java

     1 package com.se7en;
     2 
     3 import java.util.ArrayList;
     4 
     5 import android.app.AlertDialog;
     6 import android.app.Dialog;
     7 import android.content.Context;
     8 import android.graphics.drawable.Drawable;
     9 
    10 import com.google.android.maps.ItemizedOverlay;
    11 import com.google.android.maps.OverlayItem;
    12 
    13 /**
    14  * 在MapView之上创建一个图层,需要创建一个类,实现Overlay,并生成该类的对象,然后将该对象添加到MapView.getOverlays()中;
    15  * 一个overlayItem对象就代表了一个在地图上显示的标记
    16  * @author se7en
    17  *
    18  */
    19 public class FirstOverlay extends ItemizedOverlay<OverlayItem>{
    20     //创建一个List对象,用于持有该图层当中所有的标记对象
    21     private ArrayList<OverlayItem> overlayItems = new ArrayList<OverlayItem>();
    22     private Context context;
    23     
    24     public FirstOverlay(Drawable defaultMaker) {
    25         super(boundCenter(defaultMaker));
    26     }
    27     
    28     /**
    29      * @param defaultMaker 指定标记所使用的默认图片
    30      * @param context
    31      */
    32     public FirstOverlay(Drawable defaultMaker,Context context) {
    33         //boundCenter(defaultMaker):将要标记的经纬度点放在defaultMaker的正下方
    34         super(boundCenter(defaultMaker));
    35         this.context = context;
    36     }
    37     
    38     //用于将生成好的overlayItem对象添加到List当中
    39     public void addOverlay(OverlayItem overlayItem){
    40         overlayItems.add(overlayItem);
    41         //为新添加进来的overlayItem统一执行相关的操作(具体待考证。。。)
    42         populate();
    43     }
    44     
    45     //用于创建一个OverlayItem对象
    46     @Override
    47     protected OverlayItem createItem(int i) {
    48         // TODO Auto-generated method stub
    49         return overlayItems.get(i);
    50     }
    51 
    52     //返回当前的Overlay当中所包含的overlayItem对象
    53     @Override
    54     public int size() {
    55         // TODO Auto-generated method stub
    56         return overlayItems.size();
    57     }
    58     
    59     //当用户点击标记执行的操作
    60     @Override
    61     public boolean onTap(int index) {
    62         OverlayItem item = overlayItems.get(index);
    63         AlertDialog.Builder builder = new AlertDialog.Builder(context);
    64         builder.setTitle(item.getTitle());
    65         builder.setMessage(item.getSnippet());
    66         Dialog dialog = builder.create();
    67         dialog.show();
    68         return true;
    69     }
    70 
    71 }

     

  • 相关阅读:
    《算法导论》读书笔记(五)
    《算法导论》读书笔记(四)
    《算法导论》读书笔记(三)
    《算法导论》读书笔记(二)
    《算法导论》读书笔记(一)
    Posix消息队列
    管道和FIFO
    linux内核数据结构之kfifo
    linux内核数据结构之链表
    Mybatis XML 映射配置文件 -- 熟悉配置
  • 原文地址:https://www.cnblogs.com/shamgod/p/5204215.html
Copyright © 2020-2023  润新知