`
longgangbai
  • 浏览: 7338832 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

  在地图中添加小地图和线路图层的使用:

源代码:

package com.geoserver.osmdroid;

import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.MyLocationOverlay;
import org.osmdroid.views.overlay.PathOverlay;
import org.osmdroid.views.overlay.ScaleBarOverlay;
import org.osmdroid.views.overlay.SimpleLocationOverlay;
import org.osmdroid.views.overlay.MinimapOverlay;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

/**
 * 
 * 在osmdroid中 1.添加线路图层 
 * 			   2.添加小地图图层
 *             3.跟踪当前位置移动
 * 
 * 
 * @Title:
 * @Description: 实现TODO
 * @Copyright:Copyright (c) 2011
 * @Company:
 * @Date:2012-8-24
 * @author longgangbai
 * @version 1.0
 */
public class GeoServerosmdroidActivity extends Activity {
	private MapView mMapView;
	private MapController mMapController;
	int mIncr = 10000;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mMapView = (MapView) findViewById(R.id.mapview);
		mMapView.setTileSource(TileSourceFactory.MAPNIK);
		mMapView.setBuiltInZoomControls(true);
		mMapView.setMultiTouchControls(true);
		mMapController = mMapView.getController();
		mMapController.setZoom(13);
		//定位当前位置
		MyLocationOverlay mylocationLayer=new MyLocationOverlay(GeoServerosmdroidActivity.this,mMapView);
		mMapView.getOverlays().add(mylocationLayer);
		mylocationLayer.enableCompass();
		mylocationLayer.enableFollowLocation();
		mylocationLayer.enableMyLocation();
		//缩放图层
		ScaleBarOverlay scalebar=new ScaleBarOverlay(GeoServerosmdroidActivity.this);
		mMapView.getOverlays().add(scalebar);
		
		//
		SimpleLocationOverlay simpleLocation=new SimpleLocationOverlay(GeoServerosmdroidActivity.this);
		mMapView.getOverlays().add(simpleLocation);
		
		//小地图
		MinimapOverlay minmap=new MinimapOverlay(GeoServerosmdroidActivity.this,mMapView.getHandler());
		mMapView.getOverlays().add(minmap);
		
		//线路每段的坐标
		GeoPoint gPt0 = new GeoPoint(51500000, -150000); 
		GeoPoint gPt1 = new GeoPoint(gPt0.getLatitudeE6() + mIncr,
				gPt0.getLongitudeE6());
		GeoPoint gPt2 = new GeoPoint(gPt0.getLatitudeE6() + mIncr,
				gPt0.getLongitudeE6() + mIncr);
		GeoPoint gPt3 = new GeoPoint(gPt0.getLatitudeE6(),
				gPt0.getLongitudeE6() + mIncr);
		mMapController.setCenter(gPt0);
		//线路
		PathOverlay myPath = new PathOverlay(Color.RED, this);
		myPath.addPoint(gPt0);
		myPath.addPoint(gPt1);
		myPath.addPoint(gPt2);
		myPath.addPoint(gPt3);
		myPath.addPoint(gPt0);
		mMapView.getOverlays().add(myPath);
	}
}

 

 

主要配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.easyway.osmdroid"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  
    <application     android:icon="@drawable/ic_launcher"     
        android:label="@string/app_name" >     
        <activity         android:name="GeoServerosmdroidActivity"         
            android:label="@string/app_name" >         
            <intent-filter>             
                <action android:name="android.intent.action.MAIN" />              
                <category android:name="android.intent.category.LAUNCHER" />         
			</intent-filter>     
		</activity> 
	</application> 
</manifest>

 

 

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:background="#FFFFFF"
    android:id="@+id/geoserver_layout"
    android:layout_height="fill_parent" >
    <org.osmdroid.views.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:enabled="true"
        />

</RelativeLayout>

 

分享到:
评论
5 楼 prince_of_ 2016-05-11  
您好,您添加的线路是在OnCreate()方法中完成的,您有没有试过动态地添加线路,也就是由按钮点击事件触发的线路添加,我在这样使用时出现了问题,想请教您一下
4 楼 longgangbai 2013-12-02  
j2115126 写道
还是不太明白啊,是在DirectedLocationOverlay这个类里添加指南针的实现吗,MyLocationOverlay这个类已经实现了指南针,mylocationLayer.enableCompass();// 设置指南针,我还得再重写个指南针的实现吗,然后再添加到地图中mapView.getOverlays().add(DirectedLocationOverlay);是吗?我这刚接触osmdroid不太明白呢!      还有个问题就是osmdroid用什么地图源不会发生偏移啊,我用google maps定位的时候总是有偏移,本来我在道这边他给我定位到道那边去了,用OpenStreetMap Mapnik的地图源就不会有偏移,我想用google的地图源,不知道有什么办法解决偏移的问题

当时我们是重写了MyLocationOverlay实现的,至于偏移当时我们考虑不多,但是肯定是有点就是偏移的多少而已。
3 楼 j2115126 2013-11-18  
还是不太明白啊,是在DirectedLocationOverlay这个类里添加指南针的实现吗,MyLocationOverlay这个类已经实现了指南针,mylocationLayer.enableCompass();// 设置指南针,我还得再重写个指南针的实现吗,然后再添加到地图中mapView.getOverlays().add(DirectedLocationOverlay);是吗?我这刚接触osmdroid不太明白呢!      还有个问题就是osmdroid用什么地图源不会发生偏移啊,我用google maps定位的时候总是有偏移,本来我在道这边他给我定位到道那边去了,用OpenStreetMap Mapnik的地图源就不会有偏移,我想用google的地图源,不知道有什么办法解决偏移的问题
2 楼 longgangbai 2013-11-15  
j2115126 写道
楼主osmdroid中定位时不是显示一个箭头么,gps定位的时候是地图旋转,我想让地图不转,让箭头转,像指南针那样转,怎么实现啊,我找了好久都没有找到,


扩展指南针,自定义一个指南针实现,
1 楼 j2115126 2013-11-14  
楼主osmdroid中定位时不是显示一个箭头么,gps定位的时候是地图旋转,我想让地图不转,让箭头转,像指南针那样转,怎么实现啊,我找了好久都没有找到,

相关推荐

    天地图图层(ArcGIS Layer (.lyr))

    《天地图图层在ArcGIS中的应用与理解》 天地图作为中国国家级地理信息公共服务平台,为用户提供丰富的地理信息服务,包括地图浏览、定位、查询、分析等。随着技术的不断更新,天地图与GIS软件的结合也在持续演进。...

    GIS.rar_gis_gis管网_百度地图_管网图形_管网地图

    在"GIS.rar_gis_gis管网_百度地图_管网图形_管网地图"这个压缩包中,我们可以推测它包含了与GIS应用相关的文件,特别是关于管网地图的创建和编辑。 首先,"GIS.html"可能是该压缩包的核心文件,它可能是一个基于Web...

    arcgis天地图lyr图层文件合集

    为了解决这个问题,本合集提供了对应的Lyr图层文件,使得用户在低版本的ArcGIS中也能顺利接入天地图的数据。 Lyr文件是ArcGIS中的图层文件,它包含了图层的显示设置、符号系统、数据源信息等,可以方便地在不同项目...

    在原有的路径规划功能中添加在地图中添加自定义图层,并使图层跟随地图移动而移动,点击图层时可获取图层所在位置的现实坐标

    在IT领域,尤其是在移动应用开发中,特别是在地理信息系统(GIS)和地图应用中,自定义图层是一个重要的功能。此功能允许开发者根据特定需求在地图上叠加个性化信息,以提供更丰富的用户体验。以下是对这个主题的...

    重庆市GIS矢量图层shp

    在GIS中,矢量图层是重要的数据结构,它代表了地理特征的点、线、面等几何对象。矢量数据的特点在于能够精确地表示地物的位置和形状,并且可以进行复杂的几何运算和属性查询。 "shp"是Esri公司开发的ArcGIS软件中最...

    GIS.rar_csharp gis_gis_gis csharp_gis-ae_图层渲染

    在开发过程中,需要学习如何加载地图数据、创建图层、设置图层属性、以及进行交互式地图操作等。同时,良好的编程习惯和文档记录也是提高开发效率的关键。 总的来说,这个压缩包提供的资料是学习C#和ArcEngine结合...

    supermap加载天地图图层

    本文将深入探讨如何在SuperMap中加载天地图图层,这是一个非常实用的技术,可以帮助用户集成和展示丰富的地理信息数据。 首先,理解“天地图”是非常重要的。天地图是由中国测绘科学研究院研发的国家级地理信息公共...

    高德地图图层效果.zip

    在IT行业中,地图服务是应用广泛的技术之一,特别是在地理信息系统(GIS)和移动应用开发中。高德地图作为中国领先的数字地图提供商,提供了丰富的API和SDK,使得开发者能够轻松地在其平台上实现各种复杂的地图功能...

    WMS 图层与分块动态图层叠加

    综上所述,WMS图层与分块动态图层(如WMTS)的叠加,是Web GIS开发中的常见操作,通过SuperMap iClient 6R for JavaScript这样的客户端库,开发者可以轻松地实现这种功能,为用户提供丰富的地图交互体验。...

    GIS 地图亚洲地图

    GIS 地图亚洲地图

    GIS基础知识讲解_gis学习资料_gis_gis基础知识_

    4. 数据处理与分析:GIS可以进行空间分析,如缓冲区分析(确定距离某一地点一定范围内的区域)、叠置分析(合并多个图层以研究空间关系)、网络分析(寻找最短路径或最小成本路径)等。此外,还有统计分析、空间插值...

    GIS学习地图查询、空间分析

    在GIS的学习中,地图查询和空间分析是两个核心概念。 地图查询是GIS应用中的基础功能,它允许用户通过特定条件在地图上查找相关信息。这包括基于位置、属性或特定标准的搜索。例如,你可以通过地图查询找出某城市的...

    天地图水系GIS数据.zip

    标题“天地图水系GIS数据.zip”所指的是一份包含天地图水系地理信息的压缩文件,这个压缩包主要用于GIS(地理信息系统)应用。GIS是一种整合了地图、数据库和计算机技术的系统,用于处理与地理位置相关的数据。在这...

    陕西省省界GIS矢量图层shp

    在ArcGIS中,用户可以加载、编辑和分析这些矢量图层,进行地图制作、地理分析和空间决策支持。.shp文件通常与其他关联文件一起使用,如.shx(索引文件)、.dbf(属性数据文件)、.prj(投影文件)、.sbn和.sbx(备份...

    Web Gis_webgis_GIS地图开发Js_gis_webgis地图来源_web地图可视化_

    在Web GIS中,JavaScript库如Leaflet、OpenLayers、ArcGIS API for JavaScript等,为开发者提供了丰富的功能,包括加载地图瓦片、添加图层、标注、查询、分析等。例如,你可以使用这些库来创建一个基本的地图界面,...

    openlayers编辑地图图层并保存到geoserver

    这个程序示例展示了如何结合OpenLayers和GeoServer实现地图图层的编辑功能,这在GIS(地理信息系统)开发中是非常常见的需求。GeoServer是一个开源的GIS服务器,能够发布地图数据并提供WFS(Web Feature Service)等...

    天地图显示定位显示图层

    在Android开发领域,"天地图显示定位显示图层"是一个重要的功能实现,它结合了地理信息系统(GIS)和移动应用技术,使得用户可以在移动设备上查看、定位并操作地图图层。下面将详细介绍这一功能的实现及其相关知识点...

    浙江省省界GIS矢量图层shp

    标题中的“浙江省省界GIS矢量图层shp”指的是一个地理信息系统(GIS)的数据集,专门描绘了浙江省的行政边界。这个数据集是以ESRI的Shapefile(shp)格式存储的,这是一种广泛用于地理空间数据的标准文件格式。...

    arcgis在线图层加载插件,可以加载百度地图、高德地图等在线地图

    arcgis在线图层加载插件,可以加载百度地图、高德地图等在线地图。MapOnline地图插件_升级版 v1.2,新增了“GoogleEarth地图”与“历史地图”,可以“加载自定义切片”,可以“以切片的方式访问WMS服务”,比ArcMap...

    gis学习文档gis学习文档gis学习文档

    2. **GIS软件操作**:熟悉主流的GIS软件,如ArcGIS、QGIS、GRASS GIS等,学习其界面操作、数据导入导出、图层管理、地图制作等功能。 3. **空间数据分析**:学习如何进行空间叠加分析、缓冲区分析、网络分析、地形...

Global site tag (gtag.js) - Google Analytics