`
fengzhizi715
  • 浏览: 161817 次
  • 性别: Icon_minigender_1
  • 来自: 上海 苏州
社区版块
存档分类
最新评论

通过地名获得经纬度并标识在地图上

阅读更多
转载请注明出处

主要是调用Geocoder的getFromLocationName(),该方法可以传入地名。
在使用该方法前需要geo = new Geocoder(this, Locale.CHINA);
不然在地图上是查询不到的。

/**
 * 
 */
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 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.maps.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 the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		geo = new Geocoder(this, Locale.CHINA);
		// 获取MapView
		map = (MapView) findViewById(R.id.map);
		// 设置显示模式
		map.setTraffic(true);
		map.setSatellite(false);
		map.setStreetView(true);
		// 设置可以缩放
		map.setBuiltInZoomControls(true);

		List<Address> addresses = null;
		try {
			addresses = geo.getFromLocationName("江苏省苏州市寒山寺", 1);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.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.setZoom(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<Overlay> overlays = this.map.getOverlays(); 
			overlays.add(new PositionOverlay(geoPoint, this, R.drawable.ic_red_pin));
		}
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
	
	@Override
	protected Dialog onCreateDialog(int id) {
		return new AlertDialog.Builder(this).setTitle("查询出错哦")
				.setMessage("路名/地名出错,请重新输入!").create();
	}
	
	class PositionOverlay extends Overlay {
		private GeoPoint geoPoint; 
	    private Context context;
	    private int drawable;
	    
		public PositionOverlay(GeoPoint geoPoint, Context context, int drawable) { 
	        super(); 
	        this.geoPoint = geoPoint; 
	        this.context = context;
	        this.drawable = drawable;
	    }
		
		@Override 
	    public void draw(Canvas canvas, MapView mapView, boolean shadow) {

	        Projection projection = mapView.getProjection(); 
	        Point point = new Point(); 
	        projection.toPixels(geoPoint, point);

	        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), 
	                drawable); 
	        canvas.drawBitmap(bitmap, point.x-bitmap.getWidth()/2 , point.y-bitmap.getHeight(), null); 
	        super.draw(canvas, mapView, shadow); 
	    } 
	}
}


效果图如下:



程序就这么简单,作为demo我把地名写死了
  • 大小: 70.6 KB
0
0
分享到:
评论
4 楼 yangxiaoliang123 2011-12-23  
一运行就报应用程序终止。什么情况
3 楼 gyw040518 2011-11-24  
getFromLocationName()总是返回null.还出现空指针异常
2 楼 fengzhizi715 2010-11-19  
你的target有没有带GoogleAPI?还模拟器或者手机上网络打开了嘛?
1 楼 lfx_cool 2010-11-19  
碰到一个异常: request time failed : java.net.socketexception: address family not supported by protocol

相关推荐

    Android 通过地名获得经纬度并标识在地图上

    根据给定的文件信息,我们可以深入探讨如何在Android应用中实现通过地名获取经纬度并在地图上进行标注的功能。这涉及到几个关键的概念和技术点:Geocoder类的使用、Google Maps API的集成、以及如何处理地理位置数据...

    Android 通过地名获得经纬度并标识在地图上(代码已调试通过).doc

    在Android应用开发中,如果我们需要根据地名获取经纬度并显示在地图上,可以通过`Geocoder`类来实现。`Geocoder`类提供了从地理位置名称获取`Address`对象的方法,即`getFromLocationName()`。在使用这个方法之前,...

    地区经纬度信息获取(利用Google地图API获取)

    Google地图API是谷歌公司提供的一个服务,允许开发者在自己的应用中嵌入谷歌地图,并通过编程的方式实现对地图服务的访问。它提供了丰富的接口来获取地图相关数据,例如地区的位置、道路信息、街道视图等。其中,...

    全国省市县数据+拼音+经纬度 ,输入地名查询经纬度,SQL

    经纬度是地球上任何位置的唯一标识,经度表示东西方向,纬度表示南北方向。在数据库中存储这些坐标,可以让开发者快速定位到中国的任何一个行政区域,实现基于位置的服务。 这个压缩包可能包含的文件“全国省市县...

    Android google Map地图学习

    此资料包含 Android学习笔记 -...通过地名获得经纬度并标识在地图上.doc 点中overlay弹出带尾巴的气泡的实现.doc 传递坐标到Google地图.doc android map.doc Android地图和定位学习总结 .doc 希望对大家有帮助。。。。

    Android地图学习

    而"Android 通过地名获得经纬度并标识在地图上"则可能讲解了如何使用Geocoding API将地址转换为经纬度坐标,并在地图上显示这些位置。 "传递坐标到Google地图"可能涉及的是如何通过Intent启动Google Maps应用,显示...

    高德mysql信息表:区域名称、城市编码、邮政编码、经纬度、名称拼音

    在IT行业中,数据库管理和地理信息系统(GIS)是两个至关重要的领域。本文将深入探讨与给定标题和描述相关的知识点,包括“高德mysql信息表”、“高德API”、“地址编码”、“全国省市区”数据、“城市编码”、...

    在google标识出你输入的地名

    在Google地图上标识地名是一项常见的地理定位任务,它涉及到地图API的使用,特别是Google Maps API。这个功能在各种应用场景中都有所应用,比如在线导航、位置分享、旅行规划等。下面将详细介绍如何通过Google Maps ...

    全国地名代码CSV格式,包含六个字段,地名分为五个等级。rar格式解压后48MB

    总之,这个CSV文件提供的全国地名代码数据对于地理信息系统、数据分析、地图应用以及任何需要处理中国地名信息的项目都是宝贵的资源。通过与Oracle数据库的结合,可以实现高效的数据管理和便捷的数据操作。

    全国行政省、区、县市、乡、村Google_map地标(地名).rar

    这种数据通常由一系列的地理位置坐标组成,可以是经纬度对,用于在地图上精确标识出各级行政区域的位置。这些地标数据对于地图应用开发者、地理信息系统(GIS)的专业人员,或者需要进行区域划分分析的研究者来说非常...

    全国省市县数据+拼音+经纬度

    例如,通过经纬度可以将数据与地图服务接口(如Google Maps API、高德地图API等)结合,实现地理位置的可视化展示。同时,这些数据也可以用于计算两点之间的距离,为物流路线规划提供依据。 在SQLSERVER中处理这类...

    中国地图下载方法.pdf

    更有趣的是,软件允许用户在地图上添加自定义标识,如同游戏中的互动元素,为世界上的任何地点赋予个性化的标签。这种创新的交互方式,让地图的使用更具趣味性和个性化。 为了方便用户,欣思维软件的最新版下载地址...

    geojson的中国各地市地图(含县级josn).zip

    综上所述,这个压缩包提供的GeoJSON中国地图数据涵盖了全国的地级市和县级行政区划,对于开发地图应用、进行地理分析、研究城市分布和进行数据可视化等任务有着重要的价值。使用者只需解压文件,然后根据需求选择...

    地理七上21地图基本要素.ppt

    适用于没有特殊指示标志的地图,通过这个原则,我们可以确定地图上的东北、西北、东南和西南方向。 2. 指向标定向法:在地图上有明确的指向标时,箭头所指的方向为北方,其余方向以此为基础确定。 3. 经纬网定向法...

    全国和省js以及全国、省、地市json(echarts3地图数据).zip

    在本压缩包中,JavaScript文件可能是用于初始化地图并设置其特定行为,而JSON文件则包含各省市的地名和对应的经纬度坐标,以满足地图渲染的需求。 二、非数字地名的优势 与使用数字编号标识地区不同,本资源使用的...

    计算机地图制图实习指导书

    在计算机地图制图实习...总的来说,掌握Illustrator在地图制图中的应用,需要熟悉软件功能,理解地理制图原理,并通过实际操作来提升技能。实习指导书将为学习者提供系统的实践指导,帮助他们成长为专业的地图制图师。

    百度api获取地名城市名

    3. **经纬度坐标**:在地理信息系统中,经纬度是地球上任何位置的唯一标识,经度表示东西方向,纬度表示南北方向。百度API返回的经纬度可以精确到某个地点。 4. **地理编码**:将经纬度转换为具体地名的过程称为...

    Echars世界地图、全国地图、全省地图JSON和JS下载

    例如,你可能需要通过JavaScript来加载地图JSON数据,然后调用ECharts的`setOption`方法来配置并显示地图。 下面是一段简单的ECharts地图绘制示例代码: ```javascript var myChart = echarts.init(document....

    2019届高考地理总复习第一章地理基础篇__地球与地图第1讲地球仪与地图课下达标训练新人教版201806143158

    - 在地图上,任意纬线上相差一个经度的距离可以通过公式111 km×cos θ(θ 为纬度)来估算,这在计算两点间的实际距离时非常有用。 4. **方向判断与最短航线** - 判断东西方向时,可以使用劣弧定向法,即取两地间...

    高德地图 行政区编码

    - **定位服务**:通过城市代码或行政编码,快速找到用户所在的位置,并提供导航服务。 - **数据统计**:结合其他数据,如人口、经济指标等,进行区域性的统计分析。 - **地图渲染**:在地图应用中,行政编码可以用于...

Global site tag (gtag.js) - Google Analytics