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

相关文章

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python利用GeoPandas打造一个交互式中国地图选择器

《Python利用GeoPandas打造一个交互式中国地图选择器》在数据分析和可视化领域,地图是展示地理信息的强大工具,被将使用Python、wxPython和GeoPandas构建的交互式中国地图行... 目录技术栈概览代码结构分析1. __init__ 方法:初始化与状态管理2. init_ui 方法: