android-免费的离线地图提供程序(而非OpenStreetMap)

android-免费的离线地图提供程序(而非OpenStreetMap),第1张

概述我正在为我的毕业设计制作一种价格低廉的导航设备,使用Android作为 *** 作系统我尝试了GoogleNative的Map-view控件,但它仅在Online上有效.当然,我想存储地图以进行离线导航所以..我想要一个地图提供者(例如OpenStreetMap):>我可以离线使用>包含可搜索的街道名称(不仅是渲染的图像

我正在为我的毕业设计制作一种价格低廉的导航设备,使用Android作为 *** 作系统

我尝试了Google Native的Map-vIEw控件,但它仅在Online上有效.
当然,我想存储地图以进行离线导航

所以..我想要一个地图提供者(例如OpenStreetMap):

>我可以离线使用
>包含可搜索的街道名称(不仅是渲染的图像)
>商业用途
>免费或低价

OpenStreetMap的问题在于它没有为埃及的大多数城市提供详细的地图.

解决方法:

您需要像MapDroyd这样的东西,也许可以和他们讨论使用他们的代码的问题.

另外,也可以从这里选择OpenStreetMap小部件http://code.google.com/p/osmdroid/
并添加一种缓存区域的方法.对于街道名称索引,您可以下载world.osm(或只是其中的一部分以节省时间),然后通过如下所示的python脚本运行它:

(请注意,这需要做一些工作:它不会处理重复的街道名称,因此您必须对其进行一些修改.它还会找到酒吧和自动柜员机.)

#!/usr/bin/pythonfrom xml.dom import pulldomdoc = pulldom.parse("england.osm")#outfile = open("england.txt", "w")nodes = {}ways = {}pubs = []atms = []i = 0for event, node in doc:    if event == pulldom.START_ELEMENT:        if node.localname == "node":            doc.expandNode(node)            nodeID = node.getAttribute("ID")            nodeLat = node.getAttribute("lat")            nodeLon = node.getAttribute("lon")            amenity = "";            for tag in node.getElementsByTagname("tag"):                if tag.getAttribute("k") == "amenity":                    amenity = tag.getAttribute("v")            nodes[int(nodeID)] = ( float(nodeLat), float(nodeLon) )            if amenity == "pub":                pubs.append(int(nodeID))            elif amenity == "atm" or amenity == "bank":                atms.append(int(nodeID))        elif node.localname == "way":            doc.expandNode(node)            name = "";            for tag in node.getElementsByTagname("tag"):                if tag.getAttribute("k") == "name":                    name = tag.getAttribute("v")            if name == "":                continue;            wayname = name.encode("latin-1", "replace")            refList = [nd.getAttribute("ref") for nd in node.getElementsByTagname("nd")]            if ways.has_key(wayname):                ways[wayname].append([int(x) for x in refList])            else:                ways[wayname] = [int(x) for x in refList]        i = i + 1        if i % 100 == 0:            print(i / 100)print(nodes)print(ways)print(pubs)print(atms)#outfile.close()
总结

以上是内存溢出为你收集整理的android-免费的离线地图提供程序(而非OpenStreetMap)全部内容,希望文章能够帮你解决android-免费的离线地图提供程序(而非OpenStreetMap)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1092443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存