转载请注明出处
主要是调用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 通过地名获得经纬度并标识在地图上
Android 通过地名获得经纬度并标识在地图上(代码已调试通过)
通过百度地图,根据地名获取经纬度,通过经纬度定位,或者直接根据地名定位,内有详解,若有问题,请留言
根据GoogleMapApi给出地名获取经纬度,给出经纬度获取地名(Java版本) RT
利用谷歌地图获取对应地名的经纬度源码(C#) 谷歌地图获取经纬度源码
Googlemap 根据地名查询经纬度,Googlemap 根据地名查询经纬度
介绍了如何在百度地图API申请密钥,然后在Python中调用API接口将自有数据中的地名转换为经纬度坐标。具体介绍可参照我的博客。
输入一个地名可以解析成经纬度(Goole数据)
根据地名获取经纬度 直接复制代码 js执行就可以获取当前的经度纬度根据地名获取经纬度
C#百度地图API获取经纬度所在地理位置,需要替换百度地图的AK,代码亲测可用。
是我做的一个flex工程,输入一个地名,就可以在地图上显示位置,和经度和纬度的信息。
通过调用百度地图API,输入地名,得到N个结果,点击结果显示详细信息,并获取当前位置经纬度,UI已经设计好了,拿去用
高德地图经纬度转地理位置,地理位置转经纬度,json解析
此资料包含 Android学习笔记 -...通过地名获得经纬度并标识在地图上.doc 点中overlay弹出带尾巴的气泡的实现.doc 传递坐标到Google地图.doc android map.doc Android地图和定位学习总结 .doc 希望对大家有帮助。。。。
googlemap根据经纬度取地名。是一个用googlemap根据经纬度 来得到地名的小页面程序。
全国省市县数据+拼音+经纬度 ,输入地名查询经纬度,SQL源码.zip
调用百度地图定位同时获取经纬度,应该要更改成自己的百度地图key值,还有手机别忘了开权限,打开GPS
全国省市县数据+拼音+经纬度,SQLSEVER一张表实现
ArcGIS API For JavaScript 4.x 获取地图经纬度坐标(附完整代码,即开即用)
java 根据经纬度获取地理位置