Android百度搜索地名跳转,Android学习札记之百度地图(根据地名查询经纬度)

本文主要是介绍Android百度搜索地名跳转,Android学习札记之百度地图(根据地名查询经纬度),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

编辑文档

要是调用Geocoder的getFromLocationName(),该方法可以传入地名。

在使用该方法前需要geo = new Geocoder(this, Locale.CHINA);

不然在地图上是查询不到的。

Java代码

/**

*

*/

package com.decarta.demo;

import java.io.IOException;

import java.util.List;

import java.util.Locale;

importAndroid.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

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 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

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);

}

}

}

效果图如下:

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

这篇关于Android百度搜索地名跳转,Android学习札记之百度地图(根据地名查询经纬度)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793499

相关文章

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式