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

相关文章

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。