如何在百度如何在地图上画圆镂空圆 Android

Android 百度地图定位当前的位置 怎么把蓝色的圆圈换成自定义的图片了?-CSDN论坛
Android 百度地图定位当前的位置 怎么把蓝色的圆圈换成自定义的图片了?
在百度地图的示例中,&BaiduMapSDKDemo&&;&
有一个&LocationDemo&,&&&查看这个图标的&这里有百度地图&自定义图标的代码&
可以使用&资源文件中的图片&,&这里变成粉色的了&
可以结帐了&&分&
&myLocationOverlay.setMarker(getResources().getDrawable(R.drawable.my_position));
谢谢&我也是在那儿找到的
我的项目中,百度地图定位自己的那个图标太大了,怎么缩小一半啊?谢谢
回复
即使是一小步也想与你分享查看: 2023|回复: 8
关于如何在手机上使用百度地图API画多边形
该用户从未签到主题帖子e币
本帖最后由 elearning 于
12:28 编辑
最近有个需求,就是要在手机上利用百度地图画一个多边形,然后把多边形的坐标数组传到服务器上。web前端上百度提供了测距工具可以方便实现这个功能,可是手机上做该怎么实现呢,也是按照测距工具单击屏幕作为一个顶点的话,这样的话用户可操作性也不好,所以这个顶点最好可以移动,如果在用户移动手指的时候不把距离算出来,这样的操作准确性太差,如果画图完毕后怎么确定它的确画出了一个多边形,请教下各位大神都有什么解决方案吗?或者提供一些思路也可以
附件: 您需要
才可以下载或查看,没有帐号?
看百度的API也是可以的,我前两天做过百度地图的!
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
看百度的API也是可以的,我前两天做过百度地图的!
soga,那就不会了!&
仔细看描述,是手动一个点一个点连起来,不仅仅是图层操作&
该用户从未签到主题帖子e币
本帖最后由 elearning 于
13:37 编辑
看百度的API也是可以的,我前两天做过百度地图的!
仔细看描述,是手动一个点一个点连起来,这里有用户交互的,这个交互的动作可以是点击屏幕,触摸屏幕,或长按屏幕确定一个顶点坐标,不仅仅是图层操作
签到天数: 6 天连续签到: 1 天[LV.2]偶尔看看I主题帖子e币
这个是复杂面 web上也做的
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
看百度的API也是可以的,我前两天做过百度地图的!
soga,那就不会了!
该用户从未签到主题帖子e币
已经找到解决方案了,正在优化操作体验
该用户从未签到主题帖子e币
baidu demo 里有例子
该用户从未签到主题帖子e币
这里讲目前的一个思路,就是重写MapView的onTouch方法,在手指移动的时候,顺便拖一个大头针跟随手指移动,当手指离开屏幕的时候将这个点的坐标放到一个GeoPoint集合中,然后用GraphicOverlay将这个集合的坐标画成折线,这里需要注意,每当画折线的时候都要将之前添加的折线给移除,当然不移除影响也不大。这里没有动态的跟踪手指画虚线,当然可以这样做,但是这样做要不停的维护图层,内存消耗较高。
该用户从未签到主题帖子e币
打算结贴了,凡是提供思路的哥们就是最佳,无论你的思路时好时坏,只要你是认真的
推荐阅读热门话题
61887420384328284281261252226218208204201200715
半小时前昨天&23:55昨天&20:18昨天&19:53昨天&16:37昨天&16:31昨天&16:19昨天&13:51昨天&11:03昨天&11:02昨天&08:25昨天&05:30昨天&01:24前天&23:57前天&22:08前天&17:54
Powered byAndroid开发如何使用百度地图——Android学习网
&&& 关键字:android,百度地图,android百度地图开发,如何使用百度地图
&&& 我们在学习安卓开发的时候,其中最重要的一个功能就是使用百度地图实现定位,这样的功能已经在各安卓应用中屡见不鲜,那么我们要如何才能使用百度地图呢?百度地图是个什么呢?我们来看本文,本文主要讲述什么事百度地图,android开发如何使用百度地图,详细请看下文。
&&& 百度地图 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系统)及以上版本设备的应用程序接口。您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。
1)下载百度地图移动版API(Android)开发包
&&&百度地图 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系统)及以上版本设备的应用程序接口。您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件:baidumapapi.jar和libBMapApiEngine.so。下载地址:
2)申请API Key
&&&百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制,但是我们使用百度地图API之前必须要申请相应的API Key,然后才可使用百度地图Android SDK。
3)百度地图功能介绍
&& &地图展示:包括2D图、卫星图、3D图地图展示。
&&& 地图操作:提供平移、缩放、双指手势操作、底图旋转等地图相关操作。
&&& 自定义绘制:提供自定义绘制点、线、面基本几何图形的功能。
&&& 百度地图导航:提供调起百度地图Android版(v5.0及以上版本)导航功能。
&&& 地图搜索:提供根据关键字进行范围检索、城市检索和周边检索。且支持LBS云检索用户自有数据。
&&& 详情查询:提供餐饮类的POI的详细信息查看(Place详情)。
&&& 线路规划:提供公交、驾车和步行三种类型,多种方案(不含地铁、时间优先、最少换乘、最少步行)的线路规划。
&&& 地理编码:提供地址信息与坐标之间的相互转换。
&&& 位置标注:提供一个或多个POI位置标注,且支持用户自定义图标。
&&& 实时路况:提供城市实时交通路况信息图。
&&& 离线地图:提供离线地图功能,可节省用户流量。
&&& 定位:采用GPS、WIFI、基站、IP混合定位模式,请使用Android定位SDK获取定位信息,使用地图SDK定位图层进行位置展示。
4)创建安卓工程
&& 工程创建完成后,将baidumapapi.jar和libBMapApiEngine.so分别拷贝到工程的根目录及libs/armeabi目录下,并在工程属性-&Java Build Path-&Libraries中选择“Add JARs”,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。工程完整的目录结构如下图所示:
&&& 说明:百度地图移动版api支持Android 1.5及以上系统,因此我们创建的工程应基于Android SDK 1.5及以上。
5)在布局文件中添加地图控件(res/layout/main.xml)
&&1 &?xml&version="1.0"&encoding="utf-8"?&
&&2 &LinearLayout&xmlns:android="/apk/res/android"
&&3 &&&&android:orientation="vertical"
&&4 &&&&android:layout_width="fill_parent"
&&5 &&&&android:layout_height="fill_parent"&
&&6 &&&&&com.baidu.mapapi.MapView&android:id="@+id/map_View"
&&7 &&&&&&&&android:layout_width="fill_parent"
&&8 &&&&&&&&android:layout_height="fill_parent"
&&9 &&&&&&&&android:clickable="true"/&
&10 &/LinearLayout&
6)创建Activity继承com.baidu.mapapi.MapActivity
&&1 public&class&MainActivity&extends&MapActivity&{
&&2 &&&&private&BMapManager&mapM
&&3 &&&&private&MapView&mapV
&&4 &&&&private&MapController&mapC
&&5 &&&&@Override
&&6 &&&&public&void&onCreate(Bundle&savedInstanceState)&{
&&7 &&&&&&&&super.onCreate(savedInstanceState);
&&8 &&&&&&&&setContentView(R.layout.main);
&&9 &&&&&&&&//&初始化MapActivity
&10 &&&&&&&&mapManager&=&new&BMapManager(getApplication());
&11 &&&&&&&&//&init方法的第一个参数需填入申请的API&Key
&12 &&&&&&&&mapManager.init("285B415EBAB2A50ADA7F03C777C4",&null);
&13 &&&&&&&&super.initMapActivity(mapManager);
&14 &&&&&&&&mapView&=&(MapView)&findViewById(R.id.map_View);
&15 &&&&&&&&//&设置地图模式为交通地图
&16 &&&&&&&&mapView.setTraffic(true);
&17 &&&&&&&&//&设置启用内置的缩放控件
&18 &&&&&&&&mapView.setBuiltInZoomControls(true);
&19 &&&&&&&&//&用给定的经纬度构造一个GeoPoint(纬度,经度)
&20 &&&&&&&&GeoPoint&point&=&new&GeoPoint((int)&(47.118440&*&1E6),&(int)&(87.493147&*&1E6));
&21 &&&&&&&&//&创建标记maker
&22 &&&&&&&&Drawable&marker&=&this.getResources().getDrawable(R.drawable.iconmarka);
&23 &&&&&&&&//&为maker定义位置和边界
&24 &&&&&&&&marker.setBounds(0,&0,&marker.getIntrinsicWidth(),&marker.getIntrinsicHeight());
&25 &&&&&&&&//&取得地图控制器对象,用于控制MapView
&26 &&&&&&&&mapController&=&mapView.getController();
&27 &&&&&&&&//&设置地图的中心
&28 &&&&&&&&mapController.setCenter(point);
&29 &&&&&&&&//&设置地图默认的缩放级别
&30 &&&&&&&&mapController.setZoom(12);
&32 &&&&@Override
&33 &&&&protected&boolean&isRouteDisplayed()&{
&34 &&&&&&&&return&false;
&36 &&&&@Override
&37 &&&&protected&void&onDestroy()&{
&38 &&&&&&&&if&(mapManager&!=&null)&{
&39 &&&&&&&&&&&&mapManager.destroy();
&40 &&&&&&&&&&&&mapManager&=&null;
&41 &&&&&&&&}
&42 &&&&&&&&super.onDestroy();
&44 &&&&@Override
&45 &&&&protected&void&onPause()&{
&46 &&&&&&&&if&(mapManager&!=&null)&{
&47 &&&&&&&&&&&&mapManager.stop();
&48 &&&&&&&&}
&49 &&&&&&&&super.onPause();
&51 &&&&@Override
&52 &&&&protected&void&onResume()&{
&53 &&&&&&&&if&(mapManager&!=&null)&{
&54 &&&&&&&&&&&&mapManager.start();
&55 &&&&&&&&}
&56 &&&&&&&&super.onResume();
7)在AndroidManifest.xml中配置
&&1 &?xml&version="1.0"&encoding="utf-8"?&
&&2 &manifest&xmlns:android="/apk/res/android"
&&3 &&&&&&package="com.liufeng.baidumap"
&&4 &&&&&&android:versionCode="1"
&&5 &&&&&&android:versionName="1.0"&
&&6 &&&&&application&android:icon="@drawable/icon"&android:label="@string/app_name"&
&&7 &&&&&&&&&activity&android:name=".MainActivity"&android:label="@string/app_name"&
&&8 &&&&&&&&&&&&&intent-filter&
&&9 &&&&&&&&&&&&&&&&&action&android:name="android.intent.action.MAIN"&/&
&10 &&&&&&&&&&&&&&&&&category&android:name="android.intent.category.LAUNCHER"&/&
&11 &&&&&&&&&&&&&/intent-filter&
&12 &&&&&&&&&/activity&
&13 &&&&&/application&
&14 &&&&&uses-sdk&android:minSdkVersion="4"&/&
&15 &&&&&uses-permission&android:name="android.permission.ACCESS_NETWORK_STATE"&/&
&16 &&&&&uses-permission&android:name="android.permission.ACCESS_FINE_LOCATION"&/&
&17 &&&&&uses-permission&android:name="android.permission.INTERNET"&/&
&18 &&&&&uses-permission&android:name="android.permission.WRITE_EXTERNAL_STORAGE"&/&
&19 &&&&&uses-permission&android:name="android.permission.ACCESS_WIFI_STATE"&/&
&20 &&&&&uses-permission&android:name="android.permission.CHANGE_WIFI_STATE"&/&
&21 &&&&&uses-permission&android:name="android.permission.READ_PHONE_STATE"&/&
&22 &/manifest&&
&&& 本文以代码形式简单的介绍了如何使用百度地图,本文只是简单的展示了如何使用百度地图(交通地图),并将一个指定的点(根据经纬度确定)展示在手机屏幕的中心。如果在实际开发中设计百度地图,那么肯定不会这么简单,百度地图API提供了非常丰富的功能接口,在实际开发中需要哪个我们就使用哪个,这些api都需要我们一起去研究学习。
本文为Android开发学习网原创/整理,未经允许不得转载,如需转载请联系:
读后点评 感谢支持
&&&&本站安卓版APP正式上线,欢迎下载
本站提供的android教程仅用于android培训,对任何法律问题及风险不承担任何责任 本站部分内容来自网络,如有侵权,请联系本站
广告/友情链接请联系:QQ: Email:
安卓版:&QQ群:Android SDK的GraphicsOverlay图层不能显示画出的圆_百度地图api吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:5,691贴子:
Android SDK的GraphicsOverlay图层不能显示画出的圆收藏
在模拟器的Android 2.2上是可以显示的,但在我手机的4.0上根本显示不出来,害我调试了一个上午都没结果,另外定位图层的GPS位置同样显示不出定位图标与方向。
我也在调这个,在OnCreate下调用画图可以,在事件响应函数中不行。oncreate好像地图没加载之前画的,我在响应函数里用mapView.invalidate() 和mapView.refresh()都不行,不知为啥。有解决办法说一声啊
我也遇到了这个问题,请问解决了么?求解决方法
在你手机上官方demo能画出来吗? 贴一下画线部分的代码吧。定位图层要显示方向首先要调:MyLocationOverlay.enableCompass(). 然后更新LocationData的时候需要给LocationData.direction赋值.
public void updateMapView1(double latitude, double longitude, int radius) {GeoPoint geoPoint = new GeoPoint((int) (latitude * 1E6),(int) (longitude * 1E6));mapController.animateTo(geoPoint); // 将地图移动到指定的地理位置List&Overlay& ols = mapView.getOverlays();Geometry palaceGeometry = new Geometry();palaceGeometry.setCircle(geoPoint, radius);Symbol palaceSymbol = new Symbol();// 创建样式Symbol.Color palaceColor = palaceSymbol.new Color();// 创建颜色palaceColor.red = 255;// 设置颜色的红色分量palaceColor.green = 0;// 设置颜色的绿色分量palaceColor.blue = 0;// 设置颜色的蓝色分量palaceColor.alpha = 126;// 设置颜色的alpha值palaceSymbol.setSurface(palaceColor, 1, 3);// 设置样式参数,颜色:palaceColor是否填充距形:是线宽:3个像素Graphic palaceGraphic = new Graphic(palaceGeometry, palaceSymbol);GraphicsOverlay graphicsOverlay = new GraphicsOverlay(mapView);graphicsOverlay.setData(palaceGraphic);ols.add(graphicsOverlay);// 刷新地图使新添加的overlay生效mapView.refresh();mapView.invalidate();}
新的sdk2.1.1我在模拟器2.2上怎么没画出来呀,你是怎么实现的?
int size = ols.size();for (int n = size - 1; n &= 0; n--) {
Overlay ol = ols.get(n); String s = ol.getClass().getName(); Toast.makeText(this, s, Toast.LENGTH_SHORT).show(); }在画图函数里用这段代码可以获得刚画完的图层,出了函数后图层就没了。
登录百度帐号推荐应用安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&}

我要回帖

更多关于 怎么在百度地图画圆 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信