`
qinya06
  • 浏览: 595268 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

 
阅读更多


要是调用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 jason zhao
  *
  */
  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
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 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);
  }
  }
  }



 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 jason.zhao
  *
  */
  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
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 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);
  }
  }
  }
  • 大小: 15.3 KB
分享到:
评论

相关推荐

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

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

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

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

    通过百度地图,根据地名获取经纬度,内有详解

    本篇文章将详细讲解如何通过百度地图API实现从地名获取经纬度的过程,并探讨如何利用这些经纬度进行定位。 首先,我们要了解经纬度的概念。经纬度是地球上地理位置的一种表示方式,经度(Longitude)是从本初子午线...

    根据GoogleMapApi给出地名获取经纬度,给出经纬度获取地名(Java版本)

    根据GoogleMapApi给出地名获取经纬度,给出经纬度获取地名(Java版本) RT

    利用谷歌地图获取对应地名的经纬度源码(C#)

    总的来说,通过C#调用谷歌地图API进行地理编码,可以帮助开发者在各种项目中轻松获取地名对应的经纬度信息,从而实现各种基于地理位置的功能,如定位、导航、距离计算等。在开发时,请务必遵守谷歌地图API的使用政策...

    Googlemap 根据地名查询经纬度

    Googlemap 根据地名查询经纬度,Googlemap 根据地名查询经纬度

    通过地名搜索在谷歌地图上显示地理全名和经纬度

    本文将深入探讨如何通过地名搜索在谷歌地图上显示地理全名及经纬度,这是一个使用Flex技术实现的工程实例。 首先,我们要理解"经纬度"的概念。经纬度是地球上每个位置的坐标系统,经度(longitude)是从本初子午线...

    输入地名解析经纬度

    【标题】"输入地名解析经纬度"是一个与地理信息系统(GIS)和地图服务相关的技术话题,主要涉及如何通过特定的API或工具将一个地点的名称转换为精确的经纬度坐标。在本例中,提到的"Goole数据"很可能指的是Google ...

    python利用百度地图API进行地理编码(将地名转换为经纬度)

    介绍了如何在百度地图API申请密钥,然后在Python中调用API接口将自有数据中的地名转换为经纬度坐标。具体介绍可参照我的博客。

    Android地图学习

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

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

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

    百度地图通过地名搜索结果筛选获取经纬度

    本项目聚焦于通过百度地图API进行地名搜索并获取相关位置的经纬度信息。 首先,我们需要了解百度地图API。百度地图JavaScript API是一款基于Web的开发工具,它允许开发者在网页中嵌入地图功能,包括地图展示、标注...

    Android google Map地图学习

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

    QT5使用百度地图实现经典经纬度查询

    这些页面可能包含了JavaScript代码,与百度地图API交互,接收C++发送的查询请求,并将结果显示在地图上。 6. **UI设计**:"widget.ui"文件是QT Designer生成的用户界面描述文件,使用此文件可以设计和布局GUI元素,...

    js获取百度地图经纬度.txt

    根据地名获取经纬度 直接复制代码 js执行就可以获取当前的经度纬度根据地名获取经纬度

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

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

    天地图搜索及获取经纬度工具

    "天地图搜索及获取经纬度工具"是一款专为天地图设计的应用程序,它结合了地图搜索和坐标获取的功能,使得用户能够方便地在地图上定位并标记特定的地理位置。这款工具对于需要精确地理信息的场景非常实用,比如测绘、...

    C#百度地图API获取经纬度所在地理位置

    本文将深入探讨如何使用C#结合百度地图API来获取用户的经纬度,并根据这些经纬度确定其所在地理位置。 首先,我们需要了解百度地图API的基本概念。百度地图API是百度提供的一套接口,允许开发者在其应用程序中集成...

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

    在描述中提到的“输入地名查询经纬度”是指这个数据集提供了一个功能,即通过输入地名,可以快速查找到该地的精确经纬度坐标。这在需要定位或导航的软件中尤其有用,比如地图应用、物流跟踪系统或者天气预报服务。而...

    googlemap根据经纬度取地名

    googlemap根据经纬度取地名。是一个用googlemap根据经纬度 来得到地名的小页面程序。

Global site tag (gtag.js) - Google Analytics