Android GIS开发系列-- 入门季(3) GraphicsLayer添加点、线、面
GraphicsLayer是图形图层,可以自定义图形添加到地图上。调用GraphicsLayer的addGraphic方法就能添加图形,此方法要一个Graphic对象,此对象的构造方法是Graphic(Geometry geometry, Symbol symbol),前面第一个是要素,而Geometry的子类有Envelope, MultiPath, MultiPoint, Point, Segment,Line, Polygon, Polyline。我们所常用的有点Point,线Polyline,面Polygon。而后面一
个参数是样式,点的样式是SimpleMarkerSymbol,线的样式是SimpleLineSymbol,面的样式是SimpleFillSymbol。
一、GraphicsLayer添加点:
- Graphic graphic = new Graphic(point, new SimpleMarkerSymbol(Color.RED,5, SimpleMarkerSymbol.STYLE.CIRCLE));
- graphicsLayer.addGraphic(graphic);
二、添加线,样式有实线、虚线、点虚线、点点虚线、点线等。效果图如下:
- Polyline polyline = new Polyline();
- polyline.startPath(new Point(113,23));//第一个点用startPath,后面的点用lineTo方法
- polyline.lineTo(new Point(123,23));
- graphic = new Graphic(polyline,new SimpleLineSymbol(Color.RED,3, SimpleLineSymbol.STYLE.SOLID));
- graphicsLayer.addGraphic(graphic);
三、添加面Polygon,效果图如下:
- Polygon polygon = new Polygon();
- //第一个点startPath,后面的点用lineTo
- polygon.startPath(new Point(118,23));
- polygon.lineTo(new Point(118,15));
- polygon.lineTo(new Point(113,13));
- graphic = new Graphic(polygon,new SimpleFillSymbol(Color.GREEN,SimpleFillSymbol.STYLE.SOLID));
- graphicsLayer.addGraphic(graphic);
Code for all:
- package com.arcgis.test;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.support.v7.app.AppCompatActivity;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.Button;
- import android.widget.Spinner;
- import com.esri.android.map.GraphicsLayer;
- import com.esri.android.map.MapView;
- import com.esri.android.map.ags.ArcGISTiledMapServiceLayer;
- import com.esri.android.map.event.OnSingleTapListener;
- import com.esri.core.geometry.Point;
- import com.esri.core.geometry.Polygon;
- import com.esri.core.geometry.Polyline;
- import com.esri.core.map.Graphic;
- import com.esri.core.symbol.SimpleFillSymbol;
- import com.esri.core.symbol.SimpleLineSymbol;
- import com.esri.core.symbol.SimpleMarkerSymbol;
- import java.util.ArrayList;
- import java.util.List;
- public class GraphicActivity extends AppCompatActivity {
- private MapView mMapView;
- private Spinner graphicTypeSpinner;
- private Button clernBtn;
- private ArcGISTiledMapServiceLayer arcGISTiledMapServiceLayer;
- private GraphicsLayer graphicsLayer;
- private String mapServerUrl = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";
- //点集合
- private List<Point> pointList = new ArrayList<>();
- private Graphic graphic;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_graphic);
- initView();
- addLayer();
- }
- private void initView() {
- mMapView = (MapView) findViewById(R.id.map_view);
- //mapview点击事件
- mMapView.setOnSingleTapListener(new OnSingleTapListener() {
- @Override
- public void onSingleTap(float x, float y) {
- handleSingleTap(x, y);
- }
- });
- graphicTypeSpinner = (Spinner) findViewById(R.id.spinner_type);
- graphicTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- pointList.removeAll(pointList);
- graphicsLayer.removeAll();
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- clernBtn = (Button) findViewById(R.id.clear_graphic);
- clernBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- pointList.removeAll(pointList);
- graphicsLayer.removeAll();
- }
- });
- }
- private void addLayer() {
- arcGISTiledMapServiceLayer = new ArcGISTiledMapServiceLayer(mapServerUrl);
- mMapView.addLayer(arcGISTiledMapServiceLayer);
- graphicsLayer = new GraphicsLayer();
- mMapView.addLayer(graphicsLayer);
- }
- private void handleSingleTap(float x, float y) {
- Point point = mMapView.toMapPoint(x, y);
- graphicsLayer.removeAll();
- pointList.add(point);
- String type = graphicTypeSpinner.getSelectedItem().toString().trim();
- switch (type) {
- case "点":
- graphic = new Graphic(point, new SimpleMarkerSymbol(Color.RED,5, SimpleMarkerSymbol.STYLE.CIRCLE));
- graphicsLayer.addGraphic(graphic);
- break;
- case "线":
- Polyline polyline = new Polyline();
- if (pointList.size()>1){
- for(int i=0;i<pointList.size();i++){
- if (i==0){
- polyline.startPath(pointList.get(i));
- }else{
- polyline.lineTo(pointList.get(i));
- }
- }
- }
- graphic = new Graphic(polyline,new SimpleLineSymbol(Color.RED,3, SimpleLineSymbol.STYLE.SOLID));
- graphicsLayer.addGraphic(graphic);
- break;
- case "面":
- Polygon polygon = new Polygon();
- for(int i=0;i<pointList.size();i++){
- if (i==0){
- polygon.startPath(pointList.get(i));
- }else{
- polygon.lineTo(pointList.get(i));
- }
- }
- graphic = new Graphic(polygon,new SimpleFillSymbol(Color.GREEN,SimpleFillSymbol.STYLE.SOLID));
- graphicsLayer.addGraphic(graphic);
- break;
- }
- }
- }
Android GIS开发系列-- 入门季(3) GraphicsLayer添加点、线、面的更多相关文章
- Android GIS开发系列-- 入门季(14)FeatureLayer之范围查询
Android GIS开发系列-- 入门季(5),这篇文章中,我们知道如何去查找要素.现在有一个需求,查找某点5000米范围的要素,那如何来做呢?首先我们需要在地图上画个5000米半径的圆,然后根据Q ...
- Android GIS开发系列-- 入门季(6)GraphicsLayer添加文字与图片标签
一.GraphicsLayer添加图片 GraphicLayer添加图片Graphic,要用到PictureMarkerSymbol,也是样式的一种.添加代码如下: Drawable drawable ...
- Android GIS开发系列-- 入门季(4) GraphicsLayer的点击查询要素
上一讲中我们学会了如何在MapView中添加Graphic要素,那么在百度或高德地图中,当我们点击要素时,会显示出相应的详细信息.在GraphicsLayer中也提供了这样的方法.下面我们来学习在Gr ...
- Android GIS开发系列-- 入门季(1) 起点
前言 这个系列,待最终完成更新,大家体谅点,第一版本全部是参考的网络教程,最近会逐步的细化更新为可以直接使用的情况. 本系列的开发基于AS ( Android Studio ), 和ArcGIS 的 ...
- Android GIS开发系列-- 入门季(2) MapView与图层介绍
一.MapView MapView是Arcgis中的最基本的类,与高德地图SDK的MapView的重要性一样.MapView的创建有两种方法,一种是在Layout文件中直接写控件.一种是实例化,Map ...
- Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询
FeatureLayer是要素图层,也是Arcgis的主要图层.用这个图层可以加载本地的shp文件.下面我们看怎样加载shp文件到MapView中.查看ArcGis API可知FeatureLayer ...
- Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...
- Android GIS开发系列-- 入门季(12) 显示载天地图
在项目中可以经常需要动态加载一些图层,像投影地图服务.投影地图服务器.其实网上有大量这样的服务,比如天地图官网, . 随便点开一个服务,里面有相关的信息.那如何加载这样图层服务呢. 一.首先感谢这篇博 ...
- Android GIS开发系列-- 入门季(10) MapView快速定位到Geometry
我们知道某个Geometry的坐标,但不知道具体的位置,该如何使地图快速定位呢?这时需要用到MapView.setExtent方法,来看下这个方法的介绍:Zooms the map to the gi ...
随机推荐
- scala学习笔记2:面向对象编程部分基础
以下主要记录的是看完scala in programming这本书Functional Objects(第六章)后的要点总结. 1,程序中可变对象(var)和不可变对象(val)使用的权衡问题 不可变 ...
- Redis远程连接
一.打开CMD命令 二.打开Redis客户端安装地址
- 前端面试题HTML
浏览器页面有哪三层构成,分别是什么,作用是什么?
- dede手机端首页点击文章内容、列表,却跳到pc端
手机访问到手机端首页,点击列表.内容.图片等都跳到pc端,是什么原因? 查看m模板里面的index.html文件生成的代码是绝对路径(数字随机)13.html 而不是view.php?aid=13 解 ...
- PHPStorm+XDebug进行调试
笔者的开发环境如下: Windows8.1+Apache+PhpStorm+XDebug+Firefox(XDebug helper 1.4.3插件). 一.XDebug安装配置 (1)下载XDebu ...
- 【sqli-labs】 less62 GET -Challenge -Blind -130 queries allowed -Variation1 (GET型 挑战 盲注 只允许130次查询 变化1)
允许130次尝试,然后是个盲注漏洞,看来要单字符猜解了 加单引号,页面异常,但报错被屏蔽了 http://192.168.136.128/sqli-labs-master/Less-62/?id=1' ...
- 如何让一个div里面的div垂直居中?
如何让一个div里面的div垂直居中? 如何让上面灰色有文字那个div和背景图标垂直居中,不管屏幕大小有好大,始终在垂直方向上的中间.上面有整个布局和样式表,谢谢高手指点 CSS3时代当然要用CSS3 ...
- (转)淘淘商城系列——Solr的安装
http://blog.csdn.net/yerenyuan_pku/article/details/72874134 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service ...
- Linux 报错 ifconfig command not found
1.Linux 中输入ifconfig命令报错:ifconfig command not found 有可能是没有安装ifconfig,如果没有,安装上去 2.查看是不是缺少了ifconfig,它是在 ...
- JavaScipt30(第十八个案例)(主要知识点:Array.prototype.map)
承接上文,这是第十八个案例,中间的十到十八我直接看了答案,因为有些例子从他打开的页面看不出他要做什么. 附上项目链接: https://github.com/wesbos/JavaScript30 这 ...