1、通过地名获得经纬度并标识在地图上最新历史版本 :Android 通过地名获得经纬度并标识在地图上 - 未审核返回文档 编辑时间:10-25 17:15历史版本编辑者:火凤青鸾历史版本: 内容长度:6257图片数:1目录数:0 修改原因:要是调用Geocoder的getFromLocationName(,该方法可以传入地名。在使用该方法前需要geo = new Geocoder(this, Locale.CHINA。不然在地图上是查询不到的。Java代码/*/package com.decarta.demo。import java.io.IOException。import java.util.
2、List。import java.util.Locale。import android.app.AlertDialog。import android.app.Dialog。import android.content.Context。import android.graphics.Bitmap。import android.graphics.BitmapFactory。import android.graphics.Canvas。import android.graphics.Point。import android.location.Address。import android.locati
3、on.Geocoder。import android.os.Bundle。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.Projection。/* author Tony
4、Shen*/public class Main extends MapActivity / 地图显示控制相关变量定义private MapView map = null。private MapController mapCon。private Geocoder geo。private static final int ERROR_DIALOG = 1。/* Called when the activity is first created. */Overridepublic void onCreate(Bundle savedInstanceState super.onCreate(saved
5、InstanceState。setContentView(R.layout.main。geo = new Geocoder(this, Locale.CHINA。/ 获取MapViewmap = (MapView findViewById(R.id.map。/ 设置显示模式map.setTraffic(true。map.setSatellite(false。map.setStreetView(true。/ 设置可以缩放map.setBuiltInZoomControls(true。Listaddresses = null。try addresses = geo.getFromLocationN
6、ame(江苏省苏州市寒山寺, 1。b5E2RGbCAP catch (IOException e / TODO Auto-generated catch blocke.printStackTrace(。if(addresses.size( = 0 showDialog(ERROR_DIALOG。GeoPoint geoBeijing = new GeoPoint(int (39.906033* 1000000,(int (116.397700 * 1000000。mapCon = map.getController(。mapCon.setCenter(geoBeijing。mapCon.set
7、Zoom(4。 else Address address = addresses.get(0。/ 设置初始地图的中心位置GeoPoint geoPoint = new GeoPoint(int (address.getLatitude( * 1000000,(int (address.getLongitude( * 1000000。mapCon = map.getController(。mapCon.setCenter(geoPoint。mapCon.setZoom(16。List overlays = this.map.getOverlays(。overlays.add(new Positi
8、onOverlay(geoPoint, this, R.drawable.ic_red_pin。p1EanqFDPwOverrideprotected boolean isRouteDisplayed( return false。Overrideprotected Dialog onCreateDialog(int id return new AlertDialog.Builder(this.setTitle(查询出错哦DXDiTa9E3d.setMessage(路名/地名出错,请重新输入!.create(。class PositionOverlay extends Overlay priva
9、te GeoPoint geoPoint。private Context context。private int drawable。public PositionOverlay(GeoPoint geoPoint, Context context, int drawable RTCrpUDGiTsuper(。this.geoPoint = geoPoint。this.context = context。this.drawable = drawable。Overridepublic void draw(Canvas canvas, MapView mapView, boolean shadow
10、5PCzVD7HxAProjection projection = mapView.getProjection(。Point point = new Point(。projection.toPixels(geoPoint, point。Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(,jLBHrnAILgdrawable。canvas.drawBitmap(bitmap, point.x-bitmap.getWidth(/2 , point.y-bitmap.getHeight(, null。xHAQX74J0
11、Xsuper.draw(canvas, mapView, shadow。/*/package com.decarta.demo。import java.io.IOException。import java.util.List。import java.util.Locale。import android.app.AlertDialog。import android.app.Dialog。import android.content.Context。import android.graphics.Bitmap。import android.graphics.BitmapFactory。import
12、 android.graphics.Canvas。import android.graphics.Point。import android.location.Address。import android.location.Geocoder。import android.os.Bundle。import com.google.android.maps.GeoPoint。import com.google.android.maps.MapActivity。import com.google.android.maps.MapController。import com.google.android.m
13、aps.MapView。import com.google.android.maps.Overlay。import com.google.android.maps.Projection。/* author Tony Shen*/public class Main extends MapActivity / 地图显示控制相关变量定义private MapView map = null。private MapController mapCon。private Geocoder geo。private static final int ERROR_DIALOG = 1。/* Called when
14、the activity is first created. */Overridepublic void onCreate(Bundle savedInstanceState super.onCreate(savedInstanceState。setContentView(R.layout.main。geo = new Geocoder(this, Locale.CHINA。/ 获取MapViewmap = (MapView findViewById(R.id.map。/ 设置显示模式map.setTraffic(true。map.setSatellite(false。map.setStree
15、tView(true。/ 设置可以缩放map.setBuiltInZoomControls(true。Listaddresses = null。try addresses = geo.getFromLocationName(江苏省苏州市寒山寺, 1。LDAYtRyKfE catch (IOException e / TODO Auto-generated catch blocke.printStackTrace(。if(addresses.size( = 0 showDialog(ERROR_DIALOG。GeoPoint geoBeijing = new GeoPoint(int (39.9
16、06033* 1000000,(int (116.397700 * 1000000。mapCon = map.getController(。mapCon.setCenter(geoBeijing。mapCon.setZoom(4。 else Address address = addresses.get(0。/ 设置初始地图的中心位置GeoPoint geoPoint = new GeoPoint(int (address.getLatitude( * 1000000,(int (address.getLongitude( * 1000000。mapCon = map.getControlle
17、r(。mapCon.setCenter(geoPoint。mapCon.setZoom(16。List overlays = this.map.getOverlays(。overlays.add(new PositionOverlay(geoPoint, this, R.drawable.ic_red_pin。Zzz6ZB2LtkOverrideprotected boolean isRouteDisplayed( return false。Overrideprotected Dialog onCreateDialog(int id return new AlertDialog.Builder
18、(this.setTitle(查询出错哦dvzfvkwMI1.setMessage(路名/地名出错,请重新输入!.create(。class PositionOverlay extends Overlay private GeoPoint geoPoint。private Context context。private int drawable。public PositionOverlay(GeoPoint geoPoint, Context context, int drawablerqyn14ZNXIsuper(。this.geoPoint = geoPoint。this.context
19、= context。this.drawable = drawable。Overridepublic void draw(Canvas canvas, MapView mapView, boolean shadow EmxvxOtOcoProjection projection = mapView.getProjection(。Point point = new Point(。projection.toPixels(geoPoint, point。Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(,SixE2yXPq5drawable。canvas.drawBitmap(bitmap, point.x-bitmap.getWidth(/2 , point.y-bitmap.getHeight(, null。6ewMyirQFLsuper.draw(canvas, mapView, shadow。效果图如下:Android 通过地名获得经纬度并标识在地图上程序就这么简单,作为demo我把地名写死了申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1