- 浏览: 42056 次
- 性别:
- 来自: 日照
最新评论
-
wuhanchendalong:
哥们你能把这个源代码的布局文件发给我好吗?我看看 非常感谢 ...
Android 自定义BaseAdapter -
greatghoul:
antkingwei 写道greatghoul 写道有木有跨平 ...
Java 在CS客户端做网页连接 -
antkingwei:
greatghoul 写道有木有跨平台的实现方法?什么意思?
Java 在CS客户端做网页连接 -
greatghoul:
有木有跨平台的实现方法?
Java 在CS客户端做网页连接
新建一个图层
package com.android.antkingwei.google.direction; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.Projection; public class DirectionPathOverlay extends Overlay { private GeoPoint gp1; private GeoPoint gp2; public DirectionPathOverlay(GeoPoint gp1, GeoPoint gp2) { this.gp1 = gp1; this.gp2 = gp2; } @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { Projection projection = mapView.getProjection(); if(shadow == false) { Paint paint = new Paint(); paint.setAntiAlias(true); Point point = new Point(); projection.toPixels(gp1, point); paint.setColor(Color.BLUE); Point point2 = new Point(); projection.toPixels(gp2, point2); paint.setStrokeWidth(2); canvas.drawLine((float) point.x, (float) point.y, (float) point2.x, (float) point2.y, paint); } return super.draw(canvas, mapView, shadow, when); } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); } }
主类
package com.android.antkingwei.google.direction; import java.net.HttpURLConnection; import java.net.URL; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; 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 android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends MapActivity { private MapView myMapView; private GeoPoint geoPoint; private MapController myMC; private String[] pairs; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myMapView = (MapView) findViewById(R.id.mapview); geoPoint = null; myMapView.setSatellite(false); //通过地名 //pairs = getDirectionData("ahmedabad", "vadodara"); //通过四个坐标 pairs = getUrl(22.5348,113.97246,35.422006,119.524095); String[] lngLat = pairs[0].split(","); // STARTING POINT GeoPoint startGP = new GeoPoint((int)(Double.parseDouble(lngLat[1]) * 1E6), (int) (Double.parseDouble(lngLat[0]) * 1E6)); myMC = myMapView.getController(); geoPoint = startGP; myMC.setCenter(geoPoint); myMC.setZoom(8); myMapView.getOverlays().add(new DirectionPathOverlay(startGP, startGP)); // NAVIGATE THE PATH GeoPoint gp1; GeoPoint gp2 = startGP; for (int i = 1; i < pairs.length; i++) { lngLat = pairs[i].split(","); gp1 = gp2; // watch out! For GeoPoint, first:latitude, second:longitude gp2 = new GeoPoint((int) (Double.parseDouble(lngLat[1]) * 1E6),(int) (Double.parseDouble(lngLat[0]) * 1E6)); myMapView.getOverlays().add(new DirectionPathOverlay(gp1, gp2)); Log.d("xxx", "pair:" + pairs[i]); } // END POINT myMapView.getOverlays().add(new DirectionPathOverlay(gp2, gp2)); myMapView.getController().animateTo(startGP); myMapView.setBuiltInZoomControls(true); myMapView.displayZoomControls(true); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } /** * 通过四个坐标点,获得KML然后通过DOM解析 * @param fromLat * @param fromLon * @param toLat * @param toLon * @return */ public String[] getUrl(double fromLat,double fromLon,double toLat,double toLon){ String urlString = "http://maps.google.com/maps?f=d&hl=en&saddr="+fromLat+","+fromLon+"&daddr="+toLat+","+toLon+"&ie=UTF8&0&om=0&output=kml"; Log.d("URL", urlString); Document doc = null; HttpURLConnection urlConnection = null; URL url = null; String pathConent = ""; try{ url = new URL(urlString.toString()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.connect(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(urlConnection.getInputStream()); } catch (Exception e){} NodeList nl = doc.getElementsByTagName("LineString"); for(int s=0; s< nl.getLength(); s++){ Node rootNode = nl.item(s); NodeList configItems = rootNode.getChildNodes(); for(int x=0; x < configItems.getLength(); x++) { Node lineStringNode = configItems.item(x); NodeList path = lineStringNode.getChildNodes(); pathConent = path.item(0).getNodeValue(); } } String[] tempContent = pathConent.split(" "); return tempContent; } /** * 通过连个地名获得KML然后进行DOM解析 * @param srcPlace * @param destPlace * @return */ private String[] getDirectionData(String srcPlace, String destPlace) { String urlString = "http://maps.google.com/maps?f=d&hl=en&saddr="+srcPlace+"&daddr="+destPlace+"&ie=UTF&om=0&output=kml"; Log.d("URL", urlString); Document doc = null; HttpURLConnection urlConnection = null; URL url = null; String pathConent = ""; try{ url = new URL(urlString.toString()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.connect(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(urlConnection.getInputStream()); } catch (Exception e){} NodeList nl = doc.getElementsByTagName("LineString"); for(int s=0; s< nl.getLength(); s++){ Node rootNode = nl.item(s); NodeList configItems = rootNode.getChildNodes(); for(int x=0; x < configItems.getLength(); x++) { Node lineStringNode = configItems.item(x); NodeList path = lineStringNode.getChildNodes(); pathConent = path.item(0).getNodeValue(); } } String[] tempContent = pathConent.split(" "); return tempContent; } }
发表评论
-
Android开发中用到的几种多线程
2012-03-12 10:42 2182在开发工程中线程可以帮助我们提高运行速度,Andro ... -
android 数据库随APK打包发布
2012-03-09 22:01 2307有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做 ... -
goolge 地图地址位置解析
2012-02-24 16:50 1182Java代码package com.android.yibai ... -
Android ImageView使用网上图片资源
2012-02-24 16:47 1771Java代码package com.android.antk ... -
Android手机与WEB服务器通信
2012-02-24 12:30 2748Tomcat服务器 package com.edu.q ... -
手机于PC服务器通信
2012-02-24 12:16 1115手机客户端 package com.newsocket ... -
goolge 地图弹出气泡
2012-02-23 12:50 1606新建图层 package com.android.a ... -
GPS定位那点事
2012-02-22 15:30 1460<?xml version="1.0 ... -
手机上使用google 搜索引擎
2012-02-22 15:25 1145<?xml version="1.0&q ... -
android phoneGap开发
2012-01-15 08:42 1057PhoneGap是一个用基于HTML,CSS和JavaScri ... -
Android Google地图开发入门
2011-12-29 17:17 1809Android开发要连接GoogelMaps使用MapVi ... -
集中管理Activity
2011-12-25 15:21 1129有时候在设计软件的时候布局复杂的话不利于查看跟更改,这时 ... -
Android Dilaog 设置没有标题注意的地方
2011-12-23 12:51 1405layoutInflater = LayoutInfla ... -
AndroidUI设计美化
2011-12-18 15:52 967不要说Android中UI做的丑是因为不会美化,其实做一个 ... -
Android QQ多级列表的实现
2011-12-17 19:40 2332主类: package com.android.qu ... -
Android SharedPreferences应用解析
2011-12-11 09:52 1203在任何软件中,数据存储都是非常重要的,一定程度上来说它是软件 ... -
Android GridView,Gallery动态更新数据
2011-12-09 00:05 3088package com.android.wei.z ... -
Android 划出一个半透明的PopupWindow
2011-12-07 22:22 2760效果图好像不显示了package com.android ... -
Android 自定义BaseAdapter
2011-12-04 13:57 1328不要对俺的贴图做评价 看一下代码实现 pac ... -
Android 3D壁纸开发设计
2011-11-30 19:34 1075希望能给需要得人一点帮助,这个触屏可以改变壁纸映射, J ...
相关推荐
这些算法可以计算出两点间的最短路径,考虑到实际的行走路径和可能的障碍。在校园环境中,要考虑的因素可能包括步行路径、自行车道、禁止通行区域等。 接着,**路线规划**是将距离计算的结果转化为具体的行走指示。...
要实现导航功能,开发者需要利用第三方服务,如谷歌地图的Directions API,计算两点之间的最优路线。API返回的JSON数据包含了路线的详细信息,如步骤、距离、预计行驶时间等,应用可以根据这些信息绘制导航路径并...
标题中的“Google地图,最大步行距离路线!”表明我们要探讨的是如何使用Google Maps来找到步行时的最大距离路线。在Google Maps中,用户可以规划路径,包括驾车、公交、骑行以及步行路线。这里关注的是步行模式下,...
作为一款跨平台的应用,奥维地图支持多种地图源,包括高德地图和谷歌地图等知名服务商,用户可以轻松在这些地图之间切换,满足不同场景下的需求。 在奥维地图中,你可以进行以下主要操作: 1. **地图浏览**:用户...
首先,地图路径规划的基本概念是找到两点之间的最短或最优路径。这通常通过Dijkstra算法、A*搜索算法等图论方法实现。Dijkstra算法是一种基于贪心策略的全局最短路径算法,适用于所有边非负权重的图;而A*算法则在...
本资源主要涉及两个关键知识点:地理坐标系与投影坐标系,以及在谷歌3D环境下实现小车沿指定路径行走的动画。 首先,我们来深入理解地理坐标系和投影坐标系。地理坐标系是以地球的自然形状——椭球体为参考基准,...
导航功能方面,虽然基础的MapKit框架不直接提供路径规划或者导航指令功能,但通过使用第三方服务如Google Maps或Apple自家的MapKit JS,可以在应用中嵌入路线规划和导航功能。 总结起来,iOS地图开发涉及的核心技术...
此外,还可以计算两点之间的直线距离或实际驾驶距离,对于户外运动爱好者或物流规划来说极具实用性。 教育和研究领域也是Google Earth的一大应用。教师可以利用其丰富的地理信息带领学生进行虚拟实地考察,科学家则...
- **测量工具**: 测量两点或多点之间的距离或计算特定区域的面积。 - **电子邮件分享**: 通过邮件分享当前视图。 - **打印功能**: 打印当前视图以便记录或存档。 - **Google Maps 浏览**: 单击此按钮可在网页浏览器...
这些数据通常由地图提供商,如谷歌地图、高德地图等,通过航空摄影、卫星图像分析以及实地调查来收集和更新。 匹配过程涉及两个主要步骤:轨迹处理和地图匹配算法。轨迹处理是对原始GPS数据进行预处理,包括去除...
7. **测量与导航工具**:谷歌地球提供了距离和面积测量工具,用户可以测量两点间的直线距离或划定区域的面积。同时,还有简单的导航功能,为用户提供路线规划。 8. **飞行模拟**:用户可以设置起始和目的地,开启...
通过结合以上知识点,你可以在OpenLayers地图上创建出动态的、具有闪烁效果的行进路线,模拟从起点到终点的过程。在实际项目中,`olMoveLine`这样的文件可能包含了实现这一功能的完整JavaScript代码,包括地图初始化...
通过不断收集用户的经纬度坐标,保存到本地数据库或发送到服务器,然后在地图上画出运动轨迹。 "存储数据库信息"这部分,Android提供SQLite数据库系统,用于存储应用内的结构化数据,如用户的运动记录、个人信息等...
同时,软件还需实时追踪用户的GPS位置并在地图上绘制运动轨迹,让用户清楚地看到自己的行进路线。 三、服务器端交互 为了实现数据的存储和同步,骑行软件需要与服务器进行交互。这通常涉及网络编程,如使用HTTPS...
在Android平台上,开发一款能够记录用户行走轨迹的应用,通常会涉及到计步传感器(Step Sensor)和方向传感器(Orientation Sensor)的结合使用。这两种传感器在移动设备中广泛存在,为运动健康应用提供了重要的数据...
- 测量距离:用户可以测量两点之间的直线或实际行走距离。 - 速度计:实时显示当前速度,对于驾驶或骑行者特别有用。 - 高度计:显示海拔高度,适用于登山或徒步旅行。 五、安全与隐私 使用GPSGuru时,用户应注意...
两步路户外助手是一款能够在手机和平板电脑上使用的专业户外软件,具有离线地图下载及导航、路线设计、轨迹记录、兴趣点标记、数据共享等功能,可为生物多样性的调查提供极大的便利性与可靠性。 两步路户外助手软件...
11. **地图应用**:电子地图如谷歌地图、百度地图等,提供路线规划、距离查询等功能,可以放大或缩小查看细节。 12. **地图上的方向判断**:有经纬网的地图,经线指示南北,纬线指示东西;有指向标的地图按指向标...
这两种算法都是图论中的经典路径查找算法,能够找到两点之间的最短路径。A*算法结合了Dijkstra算法的全局最优性与启发式搜索的效率,通过评估函数预测每个节点到目标节点的代价,从而更早地找到最佳路径。考虑到步行...