开放式地图OpenStreeMap在安卓中的应用

最近公司做地图方面的应用,需求是用一个第三方的地图引擎来加载自己的地图(说是自己的地图,其实还是其他地图的资源不过是添加了一些图层。毕竟地图这东西不是一般公司可以整出来的)好吧!话不多说,进入主题!

https://github.com/osmdroid/osmdroid //在github的项目地址
需要下一个它的aar文件,然后导入使用。(导入说明git上已经说的很清楚,在此不再多说)
总的来说这个地图的库还是不错的,平时更新维护的都很勤快!只是他不像是谷歌那种大公司在经营的,所有有关的官方文档并不是很详细,刚开始接触的时候我也很郁闷。这玩意咋没个像样的文档,干嘛都得翻墙去查资料,耗时耗力。但为什么还要用它呢!其实事物都有双面性的,要用它是因为它是完全开源的,你可以随便改。如果你用高德,或者百度,前期你可能会感觉用起来很爽!但凡是公司都有一个目的,盈利。用着用着你就发现,怎么这个那个的都要付费。处处受它限制!当然如果公司比较吊,有钱可以忽略这个!

1.首先是加载地图,调用服务器的接口,来加载地图:
这个是项目中的代码,这个方法接受两个参数,其中overLayname是地图缓存路径下的文件夹名称,另一个mapUrl就是你需要去请求服务器接口url了(这其中会涉及到字符串拼接,地图的url是有x,y,z 这些参数的,当然如果你做这些的话,这个肯定是知道的,这里接受的是拼接好的url)

因为需求类似于写一个sdk给不同的项目使用,所有在这里我是继承地图的MapView对象来写的public class UCMapView extends MapView 所有以下的方法前面都是由MapView对象来调用的,在这个类中也就是this,所已我都省略了!

private void getOverLay(String overLayname, String[] mapUrl) {
    setMultiTouchControls(true);
    if (tileSource == null) {
        Location location = null;
        if (location != null) {
            GeoPoint point = new GeoPoint(location.getLatitude(), location.getLongitude()); //设置地图中心点
            tileSource = new SetTileSource(overLayname, 3, 18, 256, ".png", mapUrl, overLayname);
            getController().setCenter(point);
        } else {
            GeoPoint defaultPoint = new GeoPoint(39.8826, 116.4235); //设置地图中心点
            tileSource = new SetTileSource(overLayname, 3, 18, 256, ".png", mapUrl, overLayname);
            getController().setCenter(defaultPoint);
            final ArrayList<OverlayItem> it
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值