使用百度地图API生成静态地图图片

使用百度地图API生成静态地图图片,第1张

这篇文字仅仅是用来做记录

1.调用内容为百度地图静态图的API

http://lbsyun.baidu.com/index.php?title=static

2.使用版本为老版本(老版本不需要ak可以直接访问)

3.例子

3-1.(仅标注坐标点)

http://api.map.baidu.com/staticimage?center= 百度大厦&markers=百度大厦|西二旗|西二旗地铁

其中center为地图中心.makers为需要标注的位置,可以有多个,多个地址使用"|"进行连接

3-2.(有路径)

http://api.map.baidu.com/staticimage?center= 巴黎&paths=-0.12768,51.507332.3509871,48.85666676.9599115,50.94066458.6805059,50.1115118

其中paths为想要显示路径的坐标,说是可以使用文字描述,不过测试的时候文字描述没有生效,需要使用经纬度,一个坐标经纬度之间用","分割,不同坐标点使用""进行分割多条路径使用"|"进行分割

3-3.(设置位置名)

http://api.map.baidu.com/staticimage?center= 巴黎&paths=-0.12768,51.507332.3509871,48.85666676.9599115,50.94066458.6805059,50.1115118&labels=-0.12768,51.50733&labelStyles=阿斯达三大苏打,1,12,0xFF0000,0xFFF,1&pathStyles=0xff0000,5,1

通过正则表达式,从页面将图片偷下来,保存到本地即可。给你个例子

public class RegexDemo1 {

public static void main(String[] args) throws Exception{

//创建URL

URL url=new URL("http://hunan.haodf.com/")

//打开连接

URLConnection conn=url.openConnection()

//创建输入流

InputStream is=conn.getInputStream()

InputStreamReader isr=new InputStreamReader(is)

BufferedReader br=new BufferedReader(isr)

//读数据

String line=null

String allLine=""

line=br.readLine()

while(line!=null){

allLine+=line

line=br.readLine()

}

//关闭流

br.close()

isr.close()

is.close()

System.out.println(allLine)

Pattern p=Pattern.compile("(?<=<td width=\"30%\">\\s{0,100}?.{0,100}?\\.htm\\\">).+?(?=</a>\\s*?</td>)")

Matcher m=p.matcher(allLine)

int num=0

while(m.find()){

System.out.println(m.group())

num++

}

System.out.println(num)

}

}

这个是我自己写的,你参考下吧

最新百度地图使用注意事项(在使用中出现了引擎失败的家在错误,下边是注意事项)

第一步、引入BaiduMapAPI.framework

第二步、引入所需的系统库

在Xcode工程中引入CoreLocation.framework和QuartzCore.framework、

OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、

Security.framework。添加方式:在Xcode的Project ->Active Target ->Build

Phases ->Link Binary With Libraries,添加这几个framework即可。

第三步、环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。

第四步、引入mapapi.bundle资源文件

如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示

mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用

内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文

件。

方法:选中工程名,在右键菜单中选择Add Files to

“工程名”…,从BaiduMapAPI.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy

items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

第五步、引入头文件

在使用SDK的类引入头文件:

#import <baidumapapi bmapkit.h="">//引入所有的头文件

#import <baidumapapi bmkmapview.h="">//只引入所需的单个头文件</baidumapapi></baidumapapi>

上面都是引用百度地图文档上的内容,这里要注意第四条,.framework中居然有这些,但还是需要单独add到项目里。

还需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):

NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述

NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述

在使用时由于没有 *** 作第4步,导致引擎初始化失败,百度的文档写的是真心不方便。写下这篇希望能给将要使用百度地图的朋友提供点帮助。

一、使用百度地图需要注意的事项

1、静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project ->Edit Active Target ->Build->GCC4.2 - Language ->Compile Sources As设置为"Objective-C++"

2、如果您只在Xib文件中使用了BMKMapView,没有在代码中使用BMKMapView,编译器在链接时不会链接对应符号,需要在工程属性中显式设定:在Xcode的Project ->Edit Active Target ->Build ->Linking ->Other Linker Flags中添加-ObjC

3、授权Key的申请:新、旧Key之间不可通用,即新Key只可以使用在v2.0.2及后续版本的SDK中,旧的Key只适用于v2.0.1及之前版本的SDK;如果还没有授权Key,请申请密钥

4、管理地图的生命周期:自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期,并且在一个时刻只能有一个BMKMapView接受回调消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的对应的方法,并处理delegate,代码如下:

-(void)viewWillAppear:(BOOL)animated{[_mapView viewWillAppear]_mapView.delegate=self// 此处记得不用的时候需要置nil,否则影响内存的释放}-(void)viewWillDisappear:

-(BOOL)animated{[_mapView viewWillDisappear]_mapView.delegate=nil// 不用时,置nil}

5、自iOS SDK v2.5.0起,为了对iOS8的定位能力做兼容,做了相应的修改,开发者在使用过程中注意事项如下:需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述

6、在使用Xcode6进行SDK开发过程中,需要在info.plist中添加:Bundle display name ,且其值不能为空(Xcode6新建的项目没有此配置,若没有会造成manager start failed)

7、百度地图iOS SDK v2.5.0起,对arm64进行了支持适配,开发包体积有所增加。但根据开发者在研发过程中的选择,最终生成的APP体积并不会发生较大的变化。

8、确认项目中添加mapapi.bundle文件以及添加方法正确,不能删除或随意更改其中files文件夹下的内容:

注:mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。添加方式:将mapapi.bundle拷贝到您的工程目录,直接将该bundle文件托拽至Xcode工程左侧的Groups&Files中即可。若您需要替换定位、指南针的图标,请保留原文件名称,否则不显示替换的新图片,默认大头针标注与路线关键点的新图片名称可自定义名称。

9、注意BMKManager对象的生命周期管理,在使用地图SDK期间不能释放该对象,尤其在arc情况下注意避免提前被自动释放,否则,该对象一旦被释放,网络模块将不可用,地图无法加载,检索失败。

10、app在前后台切换时,需要使用下面的代码停止地图的渲染和openGL的绘制:

-(void)applicationWillResignActive:(UIApplication*)application{[BMKMapViewwillBackGround]//当应用即将后台时调用,停止一切调用opengl相关的 *** 作}-(void)applicationDidBecomeActive:(UIApplication*)application{[BMKMapViewdidForeGround]//当应用恢复前台状态时调用,回复地图的渲染和opengl相关的 *** 作}

二、使用百度地图需要引进的库

(1)引入头文件

首先将百度MapAPI提供的头文件和静态库(.a)文件拷贝到您的工程目录下,在Xcode中添加新的文件Group,引入百度MapAPI提供的头文件(请使用Xcode 4.X以上平台)。在您需要使用百度MapAPI的文件中添加以下代码 #import"BMapKit.h"

(2)引入静态库文件

百度地图SDK提供了模拟器和真机两中环境所使用的静态库文件,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下。有三种方式可以引入静态库文件:

第一种方式:直接将对应平台的.a文件拖拽至Xcode工程左侧的Groups&Files中,缺点是每次在真机和模拟器编译时都需要重新添加.a文件;

第二种方式:使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件,将合并后的通用.a文件拖拽至工程中即可,具体命令如下:lipo -create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a -output libbaidumapapi.a

第三种方式:

1. 将API的libs文件夹拷贝到您的Application工程根目录下

2. 在Xcode的Project ->Edit Active Target ->Build ->Linking ->Other Linker Flags中添加-ObjC

3. 设置静态库的链接路径,在Xcode的Project ->Edit Active Target ->Build ->Search Path ->Library Search Paths中添加您的静态库目录,比如"$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME)",$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator

注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project ->Edit Active Target ->Build ->GCC4.2 - Language ->Compile Sources As设置为"Objective-C++"

(3)引入系统framework

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。添加方式:在Xcode的Project ->Active Target ->Build Phases ->LinkBinary With Libraries,添加这几个framework即可。

(4)引入mapapi.bundle资源文件

mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。

添加方式:将mapapi.bundle拷贝到您的工程目录,直接将该bundle文件托拽至Xcode工程左侧的Groups&Files中即

可。若您需要替换定位、指南针的图标,请保留原文件名称,否则不显示替换的新图片,默认大头针标注与路线关键点的新图片名称可自定义名称。


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

原文地址: http://outofmemory.cn/sjk/9978181.html

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

发表评论

登录后才能评论

评论列表(0条)

保存