package cn.javatest.tourguide;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
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 android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
/**
* @作者 fqzsw.com
* @创建日期 Jan 10, 2011
* @版本 V 1.0
*/
public class TourGuideActivity extends MapActivity {
//常量的声明
final int HISTORY_DIALOG = 0;//历史对话框的ID
final int MODE_DIALOG = 1;//模式选择对话框的ID
//成员变量的声明
static Bitmap bitmap;//气球图片
MapController mc;//地图控制器
String jdmcArray[];//景点名称数组
Dialog historyDialog;//历史对话框的引用
/** Called when the activity is first created. */
@Override //activity 的创建、初始化方法
public void onCreate(Bundle savedInstanceState) {
//一些初始化工作
//调用父类onCreate方法
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化气球图片
bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.ballon);
//对地图进行初始化
MapView mv = (MapView)findViewById(R.id.myMapView);
mv.setBuiltInZoomControls(true);//设置地图上要缩放控制条
mc=mv.getController();//获取地图控制器
mc.setZoom(14);//设置地图缩放比例
GeoPoint gp = new GeoPoint(
//创建宝航地图中心经纬度的GeoPoint对象
(int)(39.9083*1E6),//纬度
(int)(116.3975*1E6)
);
mc.animateTo(gp);//设置地图中心点经纬度
//查询按钮添加监听器
//获取查询按钮
ImageButton ib = (ImageButton)this.findViewById(R.id.ImageButtom01);
ib.setOnClickListener(new OnClickListener(){
//重写onClick方法
public void onClick(View v) {
//获取输入的景点名称
EditText et = (EditText)findViewById(R.id.EditText01);
String jdmcStr = et.getText().toString();
//通过Geocoder查找指定名称景点的经纬度
Geocoder gc = new Geocoder(TourGuideActivity.this,Locale.getDefault());
try {//通过Geocoder查找指定名称景点的经纬度列表
List<Address> addressList =gc.getFromLocationName(jdmcStr, 1);//获取景点的经纬度列表
if(addressList.size()>0) {
//如果成功获取了经纬度取列表中的第一条记录
Address tempa = addressList.get(0);
int latE6 =(int)(tempa.getLatitude()*1000000);//获取纬度
int longE6 = (int)(tempa.getLongitude()*1000000);//获取经度
GeoPoint gp = new GeoPoint(latE6,longE6);
//纬度字符串
String latStr = Math.round(gp.getLatitudeE6()/1000.00)/1000.0+"";
//经度字符串
String longStr = Math.round(gp.getLongitudeE6()/1000.00)/1000.0+"";
//在地图的对应位置显示气球
MapView mv = (MapView)findViewById(R.id.myMapView);
List<Overlay> overlays = mv.getOverlays();
boolean isExisted = false;
MyBallonOverlay curr = null;
for(Overlay ol:overlays) {
//对所有的Overlay循环处理
if(ol instanceof MyBallonOverlay) {
//如果是气球 Overlay 关闭已经存在景点的信息提示窗口
MyBallonOverlay tempMbo = (MyBallonOverlay)ol;
tempMbo.showWindow=false;
if(gp.getLatitudeE6() == tempMbo.gp.getLatitudeE6() && gp.getLongitudeE6() == tempMbo.gp.getLongitudeE6()) {
//景点已经存在
isExisted = true;
//打开要查询景点的信息提示窗口
tempMbo.showWindow = true;
curr = tempMbo;
}
}
}
if(!isExisted) {
//如果景点不存在则添加新气球
//在点击位置添加新气球
//气球坐标 信息 景点名称
MyBallonOverlay mbo = new MyBallonOverlay(gp,jdmcStr+"的地理坐标为:\n 经度:"+longStr+"\n 纬度:"+latStr,jdmcStr);
mbo.showWindow = true;//设置信气球的信息窗口打开
overlays.add(mbo);//将新气球添加到地图上
}else {
//如果已经存在气球则将此气球移动到最上层
overlays.remove(curr);
overlays.add(curr);
}
mc.animateTo(gp);//设置中央经纬度
}else {
//若没有查询到景点经纬度则报错
//上下文 报错信息 显示时常
Toast.makeText(TourGuideActivity.this,"对不起,您要找的景点没有找到!",Toast.LENGTH_SHORT).show();
}
}catch(IOException e) {
e.printStackTrace();
}
}
});
//给历史按钮添加监听器
ib =(ImageButton)this.findViewById(R.id.ImageButtom02);
ib.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
MapView mv = (MapView)findViewById(R.id.myMapView);
List<Overlay> overlays = mv.getOverlays();
if(overlays.size() != 0) {
//若当前有历史记录则显示历史记录对话框
showDialog(HISTORY_DIALOG);
}else {
//若当前没有历史记录则提示
Toast.makeText(TourGuideActivity.this, "对不起,目前没有历史记录!", Toast.LENGTH_SHORT).show();
}
}
});
//给模式按钮添加监听器
ib =(ImageButton)this.findViewById(R.id.ImageButtom03);
ib.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//显示模式选择对话框
showDialog(MODE_DIALOG);
}
});
}
@Override //对话框的创建方法
protected Dialog onCreateDialog(int id) {
Dialog result = null;
switch (id) {
case HISTORY_DIALOG://历史记录对话框的初始化
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setItems(null, null);
historyDialog=b.create();
result = historyDialog;
break;
case MODE_DIALOG://地图模式选择对话框的初始化
AlertDialog.Builder bl = new AlertDialog.Builder(this);
bl.setIcon(R.drawable.mode);//设置图标
bl.setTitle(R.string.mode);//设置标题
bl.setItems(new String[]{"普通模式","卫星模式"}, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//获取地图View
MapView mv = (MapView)findViewById(R.id.myMapView);
switch(which) {
case 0://若索引为0则设置为普通模式
mv.setStreetView(true);
mv.setSatellite(false);
break;
case 1://若索引为1则设置为卫星模式
mv.setSatellite(true);
mv.setStreetView(false);
break;
}
}
});
result = bl.create();
break;
}
return result;
}
@Override //每次弹出对话框时被回调以动态更新对话框内容的方法
protected void onPrepareDialog(int id, Dialog dialog) {
//若不是历史对话框则返回
if(id!=this.HISTORY_DIALOG)
return;
//获取当前景点名称的列表
MapView mv = (MapView)findViewById(R.id.myMapView);
List<Overlay> overlays = mv.getOverlays();
jdmcArray = new String[overlays.size()];//存放景点名称的数组
int i = 0;//数组�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
摘要:详细介绍了Android只能手机平台下,用java开发基于GoogleMap地图服务的旅游景点位置查询引用。通过实际案例,介绍了如何使用Java在Android平台下,进行GoogleMap地图应用的开发,同时也介绍了一些控件的使用技巧及Android平台下应用开发技巧。 关键字:Ajax;GoogleMap;Filckr;MushUp;Android;MapView 转载自:http://fqzsw.com/news/newsDetail.asp?id=5112
资源推荐
资源详情
资源评论
收起资源包目录
TourGuide_fqzsw_com.rar (39个子文件)
TourGuide
.project 845B
default.properties 380B
bin
cn
javatest
tourguide
TourGuideActivity$5.class 2KB
R$string.class 492B
R$layout.class 403B
TourGuideActivity.class 6KB
TourGuideActivity$1.class 4KB
R$drawable.class 582B
TourGuideActivity$6.class 2KB
R.class 603B
R$color.class 514B
TourGuideActivity$3.class 856B
TourGuideActivity$4.class 1KB
R$attr.class 349B
TourGuideActivity$2.class 1KB
MyBallonOverlay.class 6KB
R$id.class 576B
TourGuide.apk 32KB
resources.ap_ 22KB
classes.dex 16KB
.settings
org.eclipse.core.resources.prefs 88B
org.eclipse.jdt.core.prefs 330B
AndroidManifest.xml 917B
src
cn
javatest
tourguide
MyBallonOverlay.java 7KB
TourGuideActivity.java 10KB
res
values
colors.xml 254B
strings.xml 274B
layout
main.xml 2KB
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable-mdpi
go.png 5KB
jdmc.png 2KB
history.png 4KB
mode.png 4KB
ballon.png 4KB
icon.png 3KB
dialog.png 3KB
.classpath 280B
gen
cn
javatest
tourguide
R.java 2KB
assets
共 39 条
- 1
ide94u
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页