WEB开发网
开发学院手机开发Android 开发 构建Android平台Google Map应用 阅读

构建Android平台Google Map应用

 2010-10-13 17:30:35 来源:本站整理   
核心提示:Android本身设计和系统的实现是一个极其复杂的工作。Android 提供的地图(Map)功能可能是广大开发者非常关心的一个部分。到目前为止,开发内嵌式地图应用的软件是相当的困难,而且往往还需要支付很高的地图厂商的版权费。相信在明年全面发布,真机发布之时,Android会变得更加强壮和易用。

大家可以清楚的看到,使用Android 的地图功能是非常的简单然后又很强大。那如何拿到一个地址的经度和纬度呢?有很多在线的服务可以使用。笔者比较喜欢Yahoo的Geo API :http://developer.yahoo.com/maps/rest/V1/geocode.html。Yahoo 的用户可以去免费申请一个appid,就可以使用所有Yahoo 提供的服务了。最简单的获取geocode的请求就是提供location的值:

http://local.yahooapis.com/MapsService/V1/geocode?appid你的appid&location=350+5th+Ave,+New+York,+NY+10118

在返回的XML中,我们只关心Latitude和Longitude的值:

< Latitude>40.748396< /Latitude>

< Longitude>-73.984703< /Longitude>

Android 中,可以通过包里面org.xml.sax 包来分析xml,也可以通过substring来做。如果你需要在地图上画地标、坐标、图片等等,那就需要定义你自己的Overlay 类:

public class MyOverlay extends Overlay {

// com.google.android.maps.Overlay

然后override draw(Canvas canvas, PixelCalculatorcalculator, boolean shadow)这个方法。比如你想画个图标在当前的点上:

super.draw(canvas, calculator, shadow)

// 下面两行把当前的点转换成地图上的xy坐标

int[] xyCoordinates = new int[2];

calculator.getPointXY(p, xyCoordinates);

// 在坐标这点画图(bitmap是Bitmap类,可以读取图片资源

//(drawable resources)来生成)

canvas.drawBitmap(bitmap, xyCoordinates[0],xyCoordinates[1], new Paint());

// 在mapview中获得OverlayController:

OverlayController oc = myMapView.createOverlayController();

MyOverlay mo = new MyOverlay();

// 加入到Overlay控制器就可以了

oc.add(om, true);

当然,你也可以在draw里面写字,画几何图形等等,这里就不一一叙述。

最后,我们看看如何获取键盘事件:

public boolean onKeyDown(View v, int keyCode,KeyEvent event)

{

if (keyCode == KeyEvent.KEYCODE_I)

{

// 放大

mapview.getController().zoomTo(myMapView.getZoomLevel() + 1);

return true;

}

else if (keyCode == KeyEvent.KEYCODE_O)

{

// 缩小

mapview.getController().zoomTo(myMapView.getZoomLevel() ? 1);

return true;

}

else if (keyCode == KeyEvent.KEYCODE_S)

{

// 转换到卫星地图

mapview.toggleSatellite();

return true;

}

else if (keyCode == KeyEvent.KEYCODE_T)

{

// 转换到路况图

mapview.toggleTraffic();

return true;

}

return false;

}

有兴趣的读者,可以去andoridcn 看看笔者发表的minigoogle map(包含所有source)。如果有机会,可以继续深入关于GPS的操作,如何在没有GPS硬件的情况下估计当前GPS位置,以及使用kml,nmea来模拟GPS路线等等。

总结和技术展望

Android本身设计和系统的实现是一个极其复杂的工作。就发稿时的m3-rc22a 版来看,系统还有需要充实的地方,相信在明年全面发布,真机发布之时,Android会变得更加强壮和易用。感谢Androidcn 社区的 lordhong( 吴宏) 和 风雷( 李锟) 对本文成稿的贡献。

上一页  1 2 3 4 

Tags:Android Google Map

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接