首页 文章 精选 留言 我的

精选列表

搜索[程序开发],共10000篇文章
优秀的个人博客,低调大师

Android GIS开发系列-- 入门季(4) GraphicsLayer的点击查询要素

上一讲中我们学会了如何在MapView中添加Graphic要素,那么在百度或高德地图中,当我们点击要素时,会显示出相应的详细信息。在GraphicsLayer中也提供了这样的方法。下面我们来学习在GraphicsLayer中如何点击查找要素。首先在MapView中添加两个Graphic要素。代码如下,注意这里用Graphic(Geometrygeometry,Symbolsymbol, Map<String,Object> attributes)来实例化Graphic,Map<String,Object> attributes是要素的属性值。详细见以下代码。TILED_WORLD_STREETS_URL为网络图层地址。 privatevoidinitLayer(){ mapView.addLayer(newArcGISTiledMapServiceLayer( TILED_WORLD_STREETS_URL)); graphicsLayer=newGraphicsLayer(); mapView.addLayer(graphicsLayer); Polygonpolygon=newPolygon(); polygon.startPath(newPoint(1.2575908509778766E7,2879410.9266042486)); polygon.lineTo(newPoint(1.284360696117901E7,3021972.232083669)); polygon.lineTo(newPoint(1.2826182801620414E7,2713089.403544925)); Map<String,Object>attr1=newHashMap<>(); attr1.put("name","广州"); attr1.put("mark","广州是南方的城市"); Graphicgraphic1=newGraphic(polygon,newSimpleFillSymbol(Color.RED),attr1); graphicsLayer.addGraphic(graphic1); Polygonpolygon2=newPolygon(); polygon2.startPath(newPoint(1.3388507951011453E7,3611225.628065273)); polygon2.lineTo(newPoint(1.3607101952746565E7,3858331.890896268)); polygon2.lineTo(newPoint(1.3613438010767872E7,3449656.14852193)); Map<String,Object>attr2=newHashMap<>(); attr2.put("name","上海"); attr2.put("mark","上海是中部的城市"); Graphicgraphic2=newGraphic(polygon2,newSimpleFillSymbol(Color.GREEN),attr2); graphicsLayer.addGraphic(graphic2); } 效果图如下: 准备工作完成后,设置MapView的点击事件, mapView.setOnSingleTapListener(newOnSingleTapListener(){ @Override publicvoidonSingleTap(floatx,floaty){ //TODOAuto-generatedmethodstub handleSingleTap(x,y); } }); 在handleSingleTap方法中来处理查询事件,GraphicsLayer查询要用到getGraphicIDs(float x, float y, int tolerance, int numberOfResults)或者getGraphicIDs(float x, float y, int tolerance)方法,前面两个参数是地图点击时的 x与y的值,tolerance是围绕x与y这个点所查询的范围,numberOfResults是要返回结果的大小。 /** *GraphicsLayer的点击查询 *@paramx *@paramy */ protectedvoidhandleSingleTap(floatx,floaty){ int[]graphicIds=graphicsLayer.getGraphicIDs(x,y,8); if(graphicIds!=null&&graphicIds.length>0){ for(inti=0;i<graphicIds.length;i++){ Graphicgraphic=graphicsLayer.getGraphic(graphicIds[i]); Map<String,Object>attr=graphic.getAttributes(); Log.i(TAG,attr.get("name")+"===="+attr.get("mark")); } } }这样当我们点击要素时,会打出以下的信息。 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751872.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android开发学习:向模拟器的sdcard中添加文件

向模拟器的sdcard中添加文件有两种方法: 1.在eclipse的DDMS视图中操作 启动eclipse---打开DDMS视图---选择File Explorer,出现下面的窗口 选中sdcard文件夹---点击,选择你需要添加的文件就可以了 2.运用adb命令操作 先将要添加的文件放到platform-tools(我的platform-tools路径 D:\Android\android-sdk-windows\platform-tools)文件夹下,之后在命令行窗口进入 D:\Android\android-sdk-windows\platform-tools,输入adb命令添加文件,如下图所示: 这时,文件music.mp3就被添加到sdcard/Android目录下面 之后可以在模拟器中打开dev tools,运行Media Scanner,在音乐中播放添加的音乐 还可以在命令行运行adb shell来查看sdcard中的文件,如下图所示: 向模拟器的sdcard中添加文件常见的错误: 1.Failed to push items null 解决的方法:首先重启eclipse,如果重启之后再出现这个问题,那就要修改超时数,依次展开eclipse---windwos---Preferences---Android---DDMS---ADB connection time out (ms),将参数改得大一些,如下图所示: 2.Failed to push selection: Invalid argument 原因:android不支持中文名称的文件 3.Failed to push XXXXX.txt(添加的文件) on emulator- : Read-only file system 解决的方法:在启动模拟器的时候带着的参数中,模拟器镜像路径需是绝对路径:-sdcard E:\android\android-sdk-windows\tools\sdcard.img注意这个绝对路径里面不能带空格(如Program Files)注意:(卷标、标签)必须是sdcard。如mksdcard -l sdcard128Me:\haogood.image(而不能是mksdcard -l haogood128Me:\haogood.image) 本文转自 lingdududu 51CTO博客,原文链接:http://blog.51cto.com/liangruijun/673776

优秀的个人博客,低调大师

Android GIS开发系列-- 入门季(3) GraphicsLayer添加点、线、面

GraphicsLayer是图形图层,可以自定义图形添加到地图上。调用GraphicsLayer的addGraphic方法就能添加图形,此方法要一个Graphic对象,此对象的构造方法是Graphic(Geometrygeometry,Symbolsymbol),前面第一个是要素,而Geometry的子类有Envelope,MultiPath,MultiPoint,Point,Segment,Line,Polygon,Polyline。我们所常用的有点Point,线Polyline,面Polygon。而后面一 个参数是样式,点的样式是SimpleMarkerSymbol,线的样式是SimpleLineSymbol,面的样式是SimpleFillSymbol。 一、GraphicsLayer添加点: Graphicgraphic=newGraphic(point,newSimpleMarkerSymbol(Color.RED,5,SimpleMarkerSymbol.STYLE.CIRCLE)); graphicsLayer.addGraphic(graphic); 二、添加线,样式有实线、虚线、点虚线、点点虚线、点线等。效果图如下: Polylinepolyline=newPolyline(); polyline.startPath(newPoint(113,23));//第一个点用startPath,后面的点用lineTo方法 polyline.lineTo(newPoint(123,23)); graphic=newGraphic(polyline,newSimpleLineSymbol(Color.RED,3,SimpleLineSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); 三、添加面Polygon,效果图如下: Polygonpolygon=newPolygon(); //第一个点startPath,后面的点用lineTo polygon.startPath(newPoint(118,23)); polygon.lineTo(newPoint(118,15)); polygon.lineTo(newPoint(113,13)); graphic=newGraphic(polygon,newSimpleFillSymbol(Color.GREEN,SimpleFillSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); Code for all: packagecom.arcgis.test; importandroid.graphics.Color; importandroid.os.Bundle; importandroid.support.annotation.Nullable; importandroid.support.v7.app.AppCompatActivity; importandroid.view.View; importandroid.widget.AdapterView; importandroid.widget.Button; importandroid.widget.Spinner; importcom.esri.android.map.GraphicsLayer; importcom.esri.android.map.MapView; importcom.esri.android.map.ags.ArcGISTiledMapServiceLayer; importcom.esri.android.map.event.OnSingleTapListener; importcom.esri.core.geometry.Point; importcom.esri.core.geometry.Polygon; importcom.esri.core.geometry.Polyline; importcom.esri.core.map.Graphic; importcom.esri.core.symbol.SimpleFillSymbol; importcom.esri.core.symbol.SimpleLineSymbol; importcom.esri.core.symbol.SimpleMarkerSymbol; importjava.util.ArrayList; importjava.util.List; publicclassGraphicActivityextendsAppCompatActivity{ privateMapViewmMapView; privateSpinnergraphicTypeSpinner; privateButtonclernBtn; privateArcGISTiledMapServiceLayerarcGISTiledMapServiceLayer; privateGraphicsLayergraphicsLayer; privateStringmapServerUrl="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; //点集合 privateList<Point>pointList=newArrayList<>(); privateGraphicgraphic; @Override protectedvoidonCreate(@NullableBundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_graphic); initView(); addLayer(); } privatevoidinitView(){ mMapView=(MapView)findViewById(R.id.map_view); //mapview点击事件 mMapView.setOnSingleTapListener(newOnSingleTapListener(){ @Override publicvoidonSingleTap(floatx,floaty){ handleSingleTap(x,y); } }); graphicTypeSpinner=(Spinner)findViewById(R.id.spinner_type); graphicTypeSpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){ @Override publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){ pointList.removeAll(pointList); graphicsLayer.removeAll(); } @Override publicvoidonNothingSelected(AdapterView<?>parent){ } }); clernBtn=(Button)findViewById(R.id.clear_graphic); clernBtn.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ pointList.removeAll(pointList); graphicsLayer.removeAll(); } }); } privatevoidaddLayer(){ arcGISTiledMapServiceLayer=newArcGISTiledMapServiceLayer(mapServerUrl); mMapView.addLayer(arcGISTiledMapServiceLayer); graphicsLayer=newGraphicsLayer(); mMapView.addLayer(graphicsLayer); } privatevoidhandleSingleTap(floatx,floaty){ Pointpoint=mMapView.toMapPoint(x,y); graphicsLayer.removeAll(); pointList.add(point); Stringtype=graphicTypeSpinner.getSelectedItem().toString().trim(); switch(type){ case"点": graphic=newGraphic(point,newSimpleMarkerSymbol(Color.RED,5,SimpleMarkerSymbol.STYLE.CIRCLE)); graphicsLayer.addGraphic(graphic); break; case"线": Polylinepolyline=newPolyline(); if(pointList.size()>1){ for(inti=0;i<pointList.size();i++){ if(i==0){ polyline.startPath(pointList.get(i)); }else{ polyline.lineTo(pointList.get(i)); } } } graphic=newGraphic(polyline,newSimpleLineSymbol(Color.RED,3,SimpleLineSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); break; case"面": Polygonpolygon=newPolygon(); for(inti=0;i<pointList.size();i++){ if(i==0){ polygon.startPath(pointList.get(i)); }else{ polygon.lineTo(pointList.get(i)); } } graphic=newGraphic(polygon,newSimpleFillSymbol(Color.GREEN,SimpleFillSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); break; } } } 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751859.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android UI开发第二十篇——仿launcher的左右滑动

在论坛里,经常看到有人问如何实现UC或墨迹天气那样的拖动效果。其实大部分的实现都是参考了Launcher里的Workspace这个类。今天又见问起,特分享一下曾经的用到的部分。先看一下效果图: 第一个视图 滑动过程中 第二个视图 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817129,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册