转载请注明出处
主要是调用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
分享到:
相关推荐
根据给定的文件信息,我们可以深入探讨如何在Android应用中实现通过地名获取经纬度并在地图上进行标注的功能。这涉及到几个关键的概念和技术点:Geocoder类的使用、Google Maps API的集成、以及如何处理地理位置数据...
在Android应用开发中,如果我们需要根据地名获取经纬度并显示在地图上,可以通过`Geocoder`类来实现。`Geocoder`类提供了从地理位置名称获取`Address`对象的方法,即`getFromLocationName()`。在使用这个方法之前,...
Google地图API是谷歌公司提供的一个服务,允许开发者在自己的应用中嵌入谷歌地图,并通过编程的方式实现对地图服务的访问。它提供了丰富的接口来获取地图相关数据,例如地区的位置、道路信息、街道视图等。其中,...
经纬度是地球上任何位置的唯一标识,经度表示东西方向,纬度表示南北方向。在数据库中存储这些坐标,可以让开发者快速定位到中国的任何一个行政区域,实现基于位置的服务。 这个压缩包可能包含的文件“全国省市县...
此资料包含 Android学习笔记 -...通过地名获得经纬度并标识在地图上.doc 点中overlay弹出带尾巴的气泡的实现.doc 传递坐标到Google地图.doc android map.doc Android地图和定位学习总结 .doc 希望对大家有帮助。。。。
而"Android 通过地名获得经纬度并标识在地图上"则可能讲解了如何使用Geocoding API将地址转换为经纬度坐标,并在地图上显示这些位置。 "传递坐标到Google地图"可能涉及的是如何通过Intent启动Google Maps应用,显示...
在IT行业中,数据库管理和地理信息系统(GIS)是两个至关重要的领域。本文将深入探讨与给定标题和描述相关的知识点,包括“高德mysql信息表”、“高德API”、“地址编码”、“全国省市区”数据、“城市编码”、...
在Google地图上标识地名是一项常见的地理定位任务,它涉及到地图API的使用,特别是Google Maps API。这个功能在各种应用场景中都有所应用,比如在线导航、位置分享、旅行规划等。下面将详细介绍如何通过Google Maps ...
总之,这个CSV文件提供的全国地名代码数据对于地理信息系统、数据分析、地图应用以及任何需要处理中国地名信息的项目都是宝贵的资源。通过与Oracle数据库的结合,可以实现高效的数据管理和便捷的数据操作。
这种数据通常由一系列的地理位置坐标组成,可以是经纬度对,用于在地图上精确标识出各级行政区域的位置。这些地标数据对于地图应用开发者、地理信息系统(GIS)的专业人员,或者需要进行区域划分分析的研究者来说非常...
例如,通过经纬度可以将数据与地图服务接口(如Google Maps API、高德地图API等)结合,实现地理位置的可视化展示。同时,这些数据也可以用于计算两点之间的距离,为物流路线规划提供依据。 在SQLSERVER中处理这类...
更有趣的是,软件允许用户在地图上添加自定义标识,如同游戏中的互动元素,为世界上的任何地点赋予个性化的标签。这种创新的交互方式,让地图的使用更具趣味性和个性化。 为了方便用户,欣思维软件的最新版下载地址...
综上所述,这个压缩包提供的GeoJSON中国地图数据涵盖了全国的地级市和县级行政区划,对于开发地图应用、进行地理分析、研究城市分布和进行数据可视化等任务有着重要的价值。使用者只需解压文件,然后根据需求选择...
适用于没有特殊指示标志的地图,通过这个原则,我们可以确定地图上的东北、西北、东南和西南方向。 2. 指向标定向法:在地图上有明确的指向标时,箭头所指的方向为北方,其余方向以此为基础确定。 3. 经纬网定向法...
在本压缩包中,JavaScript文件可能是用于初始化地图并设置其特定行为,而JSON文件则包含各省市的地名和对应的经纬度坐标,以满足地图渲染的需求。 二、非数字地名的优势 与使用数字编号标识地区不同,本资源使用的...
在计算机地图制图实习...总的来说,掌握Illustrator在地图制图中的应用,需要熟悉软件功能,理解地理制图原理,并通过实际操作来提升技能。实习指导书将为学习者提供系统的实践指导,帮助他们成长为专业的地图制图师。
3. **经纬度坐标**:在地理信息系统中,经纬度是地球上任何位置的唯一标识,经度表示东西方向,纬度表示南北方向。百度API返回的经纬度可以精确到某个地点。 4. **地理编码**:将经纬度转换为具体地名的过程称为...
例如,你可能需要通过JavaScript来加载地图JSON数据,然后调用ECharts的`setOption`方法来配置并显示地图。 下面是一段简单的ECharts地图绘制示例代码: ```javascript var myChart = echarts.init(document....
- 在地图上,任意纬线上相差一个经度的距离可以通过公式111 km×cos θ(θ 为纬度)来估算,这在计算两点间的实际距离时非常有用。 4. **方向判断与最短航线** - 判断东西方向时,可以使用劣弧定向法,即取两地间...
- **定位服务**:通过城市代码或行政编码,快速找到用户所在的位置,并提供导航服务。 - **数据统计**:结合其他数据,如人口、经济指标等,进行区域性的统计分析。 - **地图渲染**:在地图应用中,行政编码可以用于...