Google map(2)
来源:互联网 发布:linux怎样关闭防火墙 编辑:程序博客网 时间:2024/06/04 18:31
1.显示内置的缩放控制器:
mapView = (MapView) findViewById(R.id.mapView);mapView.setBuiltInZoomControls(true);
编写代码控制缩放:从MapView对象获取MapController实例,然后调用MapController的zoomOut()和zoomIn()方法。
MapController mc = mapView.getController();
mc.zoomIn();
缩放到指定等级:
setZoom(int zoomLevel)
2.使用不同的视图:
调用MapView的
setSatellite
(),setStreetView
(),setTraffic
()3个方法来设置不同的视图。
3.定位到指定点:MapController
调用MapController的
animateTo(GeoPoint point)方法即可。
GeoPoint
是一个含有经度和纬度的类,可以调用它的构造方法GeoPoint(int latitudeE6, int longitudeE6)
来指定经纬度。注意是有个10的6次方。
4.在指定点上画上标记点:
1)定义一个继承自Overlay的子类并重写其中的draw方法。如:
private class MapOverlay extends com.google.android.maps.Overlay { @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); //将GeoPoint 转化为屏幕坐标点 Point screenPts = new Point(); mapView.getProjection().toPixels(p, screenPts); //画出标记 Bitmap bmp = BitmapFactory.decodeResource( getResources(), R.drawable. pushpin); //50为图片的高度,screenPts点的坐标要比画出点的坐标高出图片的高度 canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null); return true; } }2)创建一个mapOverlay实例并将它添加到MapView对象上的Overlay列表中://---Add a location marker--- MapOverlay mapOverlay = new MapOverlay(); List<Overlay> listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay);
5.获得触摸点的地理坐标:
只需在MapOverlay类中重写onTouchEvent方法即可。如:
@Overridepublic boolean onTouchEvent(MotionEvent arg0, MapView arg1) { // TODO Auto-generated method stub if (arg0.getAction() == 1) { GeoPoint p = mapView.getProjection().fromPixels( (int ) arg0.getX(), (int ) arg0.getY()); Toast.makeText (getBaseContext(), "Location: "+ p.getLatitudeE6() / 1E6 + p.getLongitudeE6() / 1E6 + "",Toast.LENGTH_SHORT).show(); } return false; }
6.Geocoding:
通过Geocoding类可以从一个GeoPoint点获取它的地址:
只需要创建Geocoder类并调用它的getFromLocation()方法。如在刚才的onTouchEvent方法中添加下列代码:
Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); try { List<Address> addresses = geoCoder.getFromLocation( p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6, 1); String add = “”; if (addresses.size() > 0) { for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++) add += addresses.get(0).getAddressLine(i) + “\n”; } Toast. makeText (getBaseContext(), add, Toast. LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); }也可以反过来,根据地址来定位到点:
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());try { List<Address> addresses = geoCoder.getFromLocationName( “empire state building” , 5); if (addresses.size() > 0) { p = new GeoPoint( (int ) (addresses.get(0).getLatitude() * 1E6), (int ) (addresses.get(0).getLongitude() * 1E6)); mc.animateTo(p); mc.setZoom(20); }} catch (IOException e) { e.printStackTrace();}
- google map api 2
- Google map(2)
- google map投影方式2
- Google Map
- google map
- google map
- google map
- google map
- google map
- google map
- google map
- google map
- google map
- google map
- google map
- google map
- Google Map
- 收集的2个google map示例
- 信用卡付款的演示
- Visual Studio 2010使用Visual Assist X的方法
- Nutch1.2二次开发(关于中文分词)
- SQL数据库中的增删改查总结1
- 那些年鄙人做过的项目之电商项目
- Google map(2)
- ios 通讯录 通过电话号码 查询姓名
- 我家的三个犹太小富豪(转)
- UIAlertView的 用法
- LoadRunner最新版本11.5
- zookeeper典型使用场景
- vector
- MongoDB
- java设置http超时时间