package com.zhangle.gmt;
import java.util.List;
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.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;
// 必须继承MapActivity
public class GoogleMapTestActivity extends MapActivity
{
// 定义界面上的的可视化控件
Button locBn;
RadioGroup mapType;
MapView mv;
EditText etLng , etLat;
// 定义MapController对象
MapController controller;
Bitmap posBitmap;
//构造方法(纬度,经度)乘以10的六次方
GeoPoint geoPoint=new GeoPoint((int)(31.38*1E6),(int)(117.5*1000000));
private String text="安徽";
@Override
protected void onCreate(Bundle status)
{
super.onCreate(status);
setContentView(R.layout.main);
// 获得界面上MapView对象
mv = (MapView) findViewById(R.id.mv);
mv.setTraffic(true);//交通模式
mv.setSatellite(true);//卫星模式
mv.setStreetView(true);//街道模式
/*mv.setEnabled(true); 这两个事件可以在配置文件中设置
mv.setClickable(true);*/
// 设置显示放大、缩小的控制按钮
mv.setBuiltInZoomControls(true);
// 创建MapController对象
controller = mv.getController();
//controller.setCenter(geoPoint);设置中
controller.animateTo(geoPoint);//移动到某个点
controller.setZoom(12);//设置缩放尺寸1-21
//定义提示层
LocationOverlay lOverlay=new LocationOverlay();
//在mapview增加显示层
List<Overlay> overlays=mv.getOverlays();
overlays.add(lOverlay);
/*posBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.pos);
// 获取界面上两个文本框
etLng = (EditText) findViewById(R.id.lng);
etLat = (EditText) findViewById(R.id.lat);
// 获得Button对象
locBn = (Button) findViewById(R.id.loc);
locBn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View source)
{
// 获取用户输入的经度、纬度值
String lng = etLng.getEditableText().toString().trim();
String lat = etLat.getEditableText().toString().trim();
if (lng.equals("") || lat.equals(""))
{
Toast.makeText(GoogleMapTestActivity.this, "请输入有效的经度、纬度!",
Toast.LENGTH_LONG).show();
}
else
{
double dLong = Double.parseDouble(lng);
double dLat = Double.parseDouble(lat);
// 调用方法更新MapView
updateMapView(dLong , dLat);
}
}
});
// 触发按钮的单击事件
locBn.performClick();
// 获得RadioGroup对象
mapType = (RadioGroup) findViewById(R.id.rg);
// 为RadioGroup的选中状态改变添加监听器
mapType.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.normal:
mv.setSatellite(false);
break;
case R.id.satellite:
mv.setSatellite(true);
break;
}
}
});*/
}
@Override
protected boolean isRouteDisplayed()
{
return true;
}
public class LocationOverlay extends Overlay {
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
//坐标转换,把经纬度转换成屏幕坐标
Point point=new Point();
mv.getProjection().toPixels(geoPoint, point);
/**
* 绘制
*/
Paint paint=new Paint();
paint.setARGB(255,255, 0, 0);
paint.setStrokeWidth(1);//设置画笔宽带
paint.setARGB(255,255, 0, 0);
paint.setStyle(Paint.Style.STROKE);
//绘制矩形,知道左上和右下坐标即可
canvas.drawRect(point.x, point.y, point.x+20, point.y+10, paint);
//提示文本
canvas.drawText(text, point.x, point.y+10, paint);
//绘制图片
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.pos);
canvas.drawBitmap(bitmap, point.x,point.y, paint);
}
}
private void updateMapView(double lng, double lat)
{
GeoPoint gp = new GeoPoint((int) (lat * 1E6)
, (int) (lng * 1E6));
mv.displayZoomControls(true);
controller.animateTo(gp);
List<Overlay> ol = mv.getOverlays();
ol.clear();
ol.add(new PosOverLay(gp, posBitmap));
}
}
Android应用源码之调用GoogleMap源码,点击事件在注释里面.zip
版权申诉
190 浏览量
2022-11-01
21:16:22
上传
评论
收藏 72KB ZIP 举报
GJZGRB
- 粉丝: 1396
- 资源: 6168
最新资源
- 毕业设计基于深度强化学习的资源调度研究python源码.zip
- 2014年计算机一级Photoshop模拟试题及答案.doc
- I2C 总线控制器及读写 EEPROM实验内容,适合FPGA初学者
- (1949-2022年期间)中国教育统计年鉴
- (2005-2014期间)中国环境统计年鉴
- 2015高中信息技术excel操作题及素材(精品文档).xls
- SW3518S全协议快充USB Type-c接口电源模块硬件参考设计评估版硬件(原理图 +pcb)+封装库文件.zip
- 基于深度强化学习算法实现多星对区域目标观测的规划python源码+数据集+模型+超详细注释.zip
- RT1052+SDRAM(IS42S16160) +SIM7600CE(PCIE接口封装)控制板硬件(原理图+PCB)+封装库
- 2017大学英语四级词汇-excel-列表版(精品文档).xls
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0