osmdroid、地图 API v2 和片段

2024-01-02

好的。您可能认为这相对简单,但事实并非如此。

我在我的网站上使用开放街道地图,因为数据可以免费使用、编辑和更新 - 我的项目遵循这个口头禅,除了谷歌 API 使用限制/保存数据限制之外,谷歌地图根本不适合我。至少在网络上是这样。

鉴于此,我想我应该效仿我的 Android 应用程序,因此我利用开放街道地图数据设置了 osmdroid。

我可以在我的活动中拥有一张漂亮的地图。我还遵循了一个教程,它似乎至少可以工作,以便我可以在 tabhost/viewpager 中的片段中拥有地图视图。然而,我真正想要的(对于平板电脑)是左侧片段中的机构列表,以及右侧的地图片段,显示这些机构的位置。

我本以为很简单,但是经过数小时的研究表明这是不可能的,除非您使用一些复杂的代码和一些已弃用的方法。

所以..片段(包含地图视图)在tabhost中加载并完美运行..我可以从我的活动等访问片段中的方法..但没有什么可以简单地并排放置两个片段。

现在..我知道谷歌刚刚推出了他们的API v2..我安装了它并玩了一下..不太清楚osmdroid是如何工作的,我想我可以更新,所以我有MapFragment而不是SherlockFragment(我使用ABS)。 .然后这只是抛出 logcat 错误,要求 API 密钥等..并且考虑到我不想使用谷歌地图数据,我认为我出错了。

那么..任何人都可以建议我如何使用市场上可用的任何东西并排获得列表片段和地图片段,但最好利用开源地图数据,这样它们就没有使用限制。

我确信“可用的内容及其工作原理”的总体概述将受到大量用户的赞赏。因此,如果有人可以提供建议,那就太棒了!


在新的 Google Maps API 发布之前,我被迫使用 OSMDroid 来实现我的目的。然而,在不得不多次挖掘源代码以找出它为什么这样做(通常是错误的)之后,我非常渴望有一个新的库。

幸运的是,新的 Google Maps API 符合要求。您可以在应用程序中使用 Google Maps API v2,而不必使用 Google 的底图,但是,不幸的是,您必须首先获得 API 密钥。

我假设您想使用 OpenStreetMap 作为在线地图源,因此下面的代码将针对此进行定制。

GoogleMap map = <get-map-instance>;

map.setMapType(GoogleMap.MAP_TYPE_NONE);

TileOverlayOptions options = new TileOverlayOptions();

options.tileProvider(new UrlTileProvider(256, 256) {
    @Override
    public URL getTileUrl(int x, int y, int z) {
        try {
            String f = "http://tile.openstreetmap.org/%d/%d/%d.png";
            return new URL(String.format(f, z, x, y));
        }
        catch (MalformedURLException e) {
            return null;
        }
    }
});

map.addTileOverlay(options);

您可以在我的 Google Maps API v2 附加库中找到此代码的更正式版本here https://github.com/cocoahero/android-gmaps-addons/blob/master/src/com/cocoahero/android/gmaps/addons/osm/OpenStreetMapTileProvider.java.

另外,如果您的目标是 Fragment 之前的 Android 版本(我相信您是基于使用 ABS,而不是使用 MapFragment),请确保使用 SupportMapFragment。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

osmdroid、地图 API v2 和片段 的相关文章

  • 意图?如何注册以获得传入电子邮件提醒?

    这里是极限 Android 开发新手 好吧 Android 开发新手 而不是一般开发 我想编写一个应用程序 当电子邮件进入设备时会收到通知 并根据电子邮件中的数据 主题 发件人 收件人等 采取各种操作 我认为我要做的是创建一个带有 Inte
  • Kapt 未在即时应用程序功能模块中生成类

    我在我的 Android 应用程序中使用 dagger2 即使没有错误 它也不会生成匕首组件类 我已经在设置中启用了注释处理器并重新启动了我的 android studio 但这对我来说不起作用 我也读过这个帖子Dagger2 不生成 Da
  • 处理 Android 锁屏上的音量变化?

    我想做的是 能够在 android 4 4 上的锁屏上捕获音量增大 减小按钮操作 Google Cast 设计清单 https developers google com cast docs design checklist sender
  • 在名称中使用时间戳时,Android Studio 在构建后无法启动应用程序

    我遇到了 gradle 和 Android Studio 的问题 该问题仅在 Android Studio 中构建时出现 BuildServer 和 Commandline 工作正常 applicationVariants all vari
  • 如何使用retrofit2进行GET请求?

    我有一个在本地主机上运行的安静的 Web 服务 我想在该剩余 URL 上发出 Retrofit2 GET 请求 MainActivity java private void requestData public static final S
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • Android 5.0 Lollipop 中屏幕固定关闭时如何收到通知?

    我有一个在后台运行的应用程序 并在手机上发生特定事件时启动活动 我发现在 Android 5 0 中 当用户使用另一个应用程序打开屏幕固定时 startActivity intent 调用将被完全忽略 我的应用程序不知道该活动尚未启动 因此
  • 在浏览器中打开 URL,即使我的应用程序为其注册了意图过滤器

    我的应用程序为某些 URL 注册了一个意图过滤器 因为它可以处理来自这些 URL 的数据 但是 在应用程序内部 我想提供一个按钮来在浏览器中打开这样的 URL 也就是说 如果设置了默认浏览器 则在默认浏览器中打开它 否则提供一个选择器 就像
  • 需要在 Android 中伪造正在扫描的 NFC 标签

    好的 我有一个应用程序 此应用程序仅在扫描 NFC 标签 任何标签 时才会完成任务 唯一的问题是 我没有任何 nfc 标签 无论如何 我正试图消除对卡的需要 所以我需要的是一种 伪造 使其看起来 就像已扫描 nfc 标签的方法 我可以编写应
  • 在后台服务中持续获取位置更新

    我正在开发需要在后台服务中持续获取位置更新的应用程序 我已经使用了它正在使用的后台粘性服务 但是 即使我添加了启动广播并在那里启动了服务 启动完成后服务也没有启动 服务启动并立即被杀死 另外 这不适用于奥利奥 服务在应用程序关闭几分钟后停止
  • 无法在云控制台中启用 Maps SDK for Android

    我在云控制台中启用适用于 Android 的 Maps SDK 时遇到此问题 https console cloud google com https console cloud google com 它会抛出以下错误 附截图 我收到错误消
  • 如何在android中画一条曲线?

    我是 Android 新手 正在开发一个关于绘制线条的示例项目 我想画一条连接两点的曲线或高架线 x1 y1 and x2 y2 我试过canvas drawArc 方法 但是RectF内的值drawArc方法只是圆的 x y 中心点 它在
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个
  • 使用后退按钮启动 Activity

    我正在 Android 中开发一个应用程序 我正在寻找解决方案 有一个活动 例如 A1 通过单击按钮 用户可以转到另一个活动 例如 A2 现在 一旦用户完成 A2 活动 他就会单击后退按钮 返回到上一个活动 A1 这是众所周知的事实 A1此
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 如何在 onDraw() 方法中定义与像素无关的高度

    我扩展了 View 来构建自定义小部件 我想用独立的像素单位定义小部件的高度 我认为可以通过将像素密度乘以所需的高度来完成 但我不知道该怎么做 到目前为止我所拥有的 最小化 public class Timeline extends Vie
  • 制作弹跳动画

    我想做图层的弹跳动画 我已经完成了该图层从右到中心的操作 现在我想将其向后移动一点 然后回到中心 这会产生反弹效果 我想我可以用这样的翻译来做到这一点
  • 如何从灰度字节缓冲区图像创建位图?

    我正在尝试使用新的 Android 人脸检测移动视觉 API 来处理帧图像 所以我创建了自定义检测器来获取帧并尝试调用 getBitmap 方法 但它为空 所以我访问了帧的灰度数据 有没有办法从它或类似的图像持有者类创建位图 public

随机推荐

  • 使用 p:calendar 相互限制开始和结束日期时间(无验证)

    我们需要向用户呈现两个 p calendar 组件 分别代表开始日期和结束日期 两个日期时间都有日期 小时和分钟 PrimeFaces 拥有完美mindate maxdate minHour maxHour minMinute and mi
  • 如何使用正则表达式找到除某些短语之外的所有内容?

    好的 所以我有一个短语 foo bar 我想找到除 foo bar 之外的所有内容 这是我的文字 ipsum dolor foo bar Lorem ipsum dolor sat amet 脂肪精英协会eiusmod tempor foo
  • 从phpmyadmin导出数据时返回sql查询页面

    我在 phpMyAdmin 上运行以下查询我获得了数据 但是当单击 导出 时 它会重定向到 sql 查询选项卡 Select sad firstname sad lastname sfo base total invoiced sad em
  • C# 加密登录

    我正在尝试创建一个简单的 asp net 网站 允许用户注册和登录 我已成功地将所有数据存储在数据库中 并在登录表单中对用户进行身份验证 然而我现在想做的是每当新用户注册时将密码以 MD5 格式存储在数据库中并匹配哈希值以便用户能够登录 这
  • 在 Python 2.4 中使用 urllib 解析查询字符串

    使用Python2 4 5 不要问 我想解析一个查询字符串并获得一个字典作为返回 我必须像下面这样 手动 进行操作吗 gt gt gt qs first 1 second 4 third 3 gt gt gt d dict x split
  • Python Pandas 重置运行总计

    我想执行以下任务 给定 2 列 好和坏 我想用运行总计替换这两列的任何行 这是当前数据帧以及所需数据帧的示例 编辑 我应该添加我的意图 我正在尝试使用连续变量作为输入来创建同等分箱 在本例中为 20 的变量 我知道 pandas cut 和
  • PHP 循环遍历 HTML 文本框数组

    我有一个 HTML 表单 其中包含动态数量的复选框字段 所有这些字段都封装在提交表单中 提交表单后 我想使用 PHP 脚本循环遍历每个复选框字段的值 同时 我必须保留与复选框字段关联的特定 ID 以便当我循环遍历脚本中的每个字段时 我可以使
  • 使用llvm从桌面交叉编译到arm

    我正在笔记本电脑上编写 C 代码 我想使用 llvm clang 工具链将其交叉编译为 ARM v7 架构 我正在关注这个网站http llvm org docs HowToCrossCompileLLVM html http llvm o
  • 如何将[setup]中AppID的内容转换为[code]中的字符串?

    当我使用 INNO 向导时 我得到一个 iss 文件 其中包含其设置部分 Setup AppId 87E1AD40 F32B 4EF7 A2FF 5B508814068A
  • 如何解决 Visual C++ 编译器中的错误 C1001?

    我刚刚将 Microsoft Visual Studio Enterprise 2015 从 Update 2 升级到 Update 3 现在收到以下错误 致命错误 C1001 编译器中发生内部错误 编译器文件 f dd vctools c
  • mmap 比 ioremap 慢

    我正在为运行 Linux 2 6 37 的 ARM 设备进行开发 我正在尝试尽快切换 IO 引脚 我制作了一个小内核模块和一个用户空间应用程序 我尝试了两件事 使用以下命令直接从内核空间操作 GPIO 控制寄存器ioremap mmap G
  • 如何在会话中存储检索对象并随后访问它?

    我正在尝试创建一个简单的登录页面 我检索一个User使用 hibernate 从我的数据库中获取对象 这部分工作正常 我这样做如下 data from login form String username request getParame
  • 设置 xlObj = CreateObject("excel.application") 需要高程 (vbscript)

    每次我尝试在 vbscript 中运行包含 Set xlObj CreateObject excel application 行的脚本时 都会收到一条错误消息 提示 Line Requires Elevation 我认为这是一个权限问题 但
  • Python Pandas 计算日期之间的平均天数

    使用以下 python pandas dataframe df Customer ID Transaction ID ABC 2016 05 06 1234 ABC 2017 06 08 3456 ABC 2017 07 12 5678 A
  • 最佳实践是使用 Thread.sleep() 还是在单击 selenium Web 驱动程序中的任何元素之前显式等待

    我是网络驱动程序的新手 我为网络应用程序编写了一个selenium脚本 其中包含backbone js和select2 我曾经经常遇到 NosuchElementException 和 Element is not clickable 异常
  • 绑定表源继承什么类

    我正在使用 Xamarin 和 mvvmcross 以及如何拥有最终绑定到可观察集合的表的视图 This video http www youtube com watch v Vd1p2Gz8jfY关于如何创建自定义单元格的信息非常丰富 但
  • 这个异常是什么意思?

    我在使用 MAVEN 构建 Grails 应用程序时收到此消息 引导程序完成后 我在日志中收到此异常 有人可以指导我到哪里寻找此异常的原因吗 它想表达什么 2012 09 26 13 00 45 532 Thread 7 ERROR Sta
  • HTML5 contenteditable div 仅接受纯文本

    我正在尝试创建一个HTML5contenteditable div 只接受纯文本 我在下面使用 html 和 jQuery HTML div div jQuery function contenteditable on paste func
  • 因素级别内的记录计数

    我正在尝试使用从 1 到 n 的连续数字填充表中的字段 或完全创建一个单独的向量 以更容易的为准 其中 n 是共享相同因子级别的记录总数 然后返回到 1对于下一个级别 等等 也就是说 对于这样的表 data lt matrix c rep
  • osmdroid、地图 API v2 和片段

    好的 您可能认为这相对简单 但事实并非如此 我在我的网站上使用开放街道地图 因为数据可以免费使用 编辑和更新 我的项目遵循这个口头禅 除了谷歌 API 使用限制 保存数据限制之外 谷歌地图根本不适合我 至少在网络上是这样 鉴于此 我想我应该