本篇文章主是是针对arcgis for
android中的一个sample实例进行了一些改进,并且进行一个综合,是使用之前须集成eclipse+android
sdk+arcgis for android插件,关于怎样集成该插件,我会相继发布出来,网上也有很多例子集成插件的方法。
LoadMap类:
package com.arcgis.load;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import com.esri.android.map.GraphicsLayer;
import com.esri.android.map.MapView;
import com.esri.android.map.ags.ArcGISDynamicMapServiceLayer;
import com.esri.android.map.event.OnLongPressListener;
import com.esri.core.geometry.Envelope;
import com.esri.core.geometry.Geometry;
import com.esri.core.geometry.GeometryEngine;
import com.esri.core.geometry.Point;
import com.esri.core.geometry.SpatialReference;
import com.esri.core.map.Graphic;
import com.esri.core.renderer.SimpleRenderer;
import com.esri.core.symbol.SimpleMarkerSymbol;
public class LoadMap extends Activity {
private MapView map = null;
private TextView label = null;
private Button buttonZoomIn = null;
private Button buttonZoomOut = null;
private GraphicsLayer gLayer = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = (MapView)
findViewById(R.id.map);
label = (TextView)
findViewById(R.id.label);
gLayer = (GraphicsLayer)
findViewById(R.id.gLayer);
// 放大缩小事件
zoomInOrOut();
//设置地图显示范围
setExtent();
//设置起始定位经纬点
Point ptLatLon = new
Point(120.713511, 31.685513);
onSetGraphic(ptLatLon);
//鼠标长按事件
setLongMouse();
Object init =
getLastNonConfigurationInstance();
if (init != null) {
map.restoreState((String)
init);
}
}
public Point formartPoint(Point pt) {
SpatialReference sr4326 =
SpatialReference.create(4326);
Point ptMap = (Point)
GeometryEngine.project(pt, sr4326, map
.getSpatialReference());
return ptMap;
}
public void setExtent() {
Envelope initextext = new
Envelope(120.65471393068182, 31.565493457704875,
120.90532917210974, 31.714061774479514);
map.zoomTo(initextext);
}
public void zoomInOrOut() {
buttonZoomIn = (Button)
findViewById(R.id.buttonZoomIn);
buttonZoomOut = (Button)
findViewById(R.id.buttonZoomOut);
this.buttonZoomIn.setOnClickListener(new
OnClickListener() {
@Override
public void
onClick(View v) {
LoadMap.this.map.zoomin();
}
});
this.buttonZoomOut.setOnClickListener(new
OnClickListener() {
@Override
public void
onClick(View v) {
LoadMap.this.map.zoomout();
}
});
}
public void onGraphic(float x, float y) {
gLayer.clear();
gLayer.setRenderer(new
SimpleRenderer(new SimpleMarkerSymbol(Color.RED,
10,
SimpleMarkerSymbol.STYLE.CIRCLE)));
Graphic g = new
Graphic();
g.setGeometry(LoadMap.this.map.toMapPoint(x,
y));
gLayer.addGraphic(g);
gLayer.invalidate();
}
public void onSetGraphic(Point pt) {
gLayer.clear();
gLayer.setRenderer(new
SimpleRenderer(new SimpleMarkerSymbol(Color.RED,
10,
SimpleMarkerSymbol.STYLE.CIRCLE)));
Graphic g = new
Graphic();
g.setGeometry((Geometry)
pt);
gLayer.addGraphic(g);
gLayer.invalidate();
}
public void onlocationManager() {
loc = (LocationManager)
this.getSystemService(Context.LOCATION_SERVICE);
loc.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0,
new
LocationListener() {
public
void onLocationChanged(Location l) {
Point
ptLatLon = new Point(l.getLongitude(), l
.getLatitude());
SpatialReference
sr4326 = SpatialReference.create(4326);
Point
ptMap = (Point) GeometryEngine.project(ptLatLon,
sr4326,
map.getSpatialReference());
LoadMap.this.label.setText("X:"
+ ptMap.getX() + "Y:"
+
ptMap.getY());
map.centerAt(ptMap);
}
public
void onProviderDisabled(String provider) {
}
public
void onProviderEnabled(String provider) {
}
public
void onStatusChanged(String provider, int status,
Bundle
extras) {
}
});
}
public void setLongMouse(){
map.setOnLongPressListener(new
OnLongPressListener() {
private
static final long serialVersionUID = 1L;
@Override
public void
onLongPress(float x, float y) {
LoadMap.this.onGraphic(x,
y);
}
});
}
public Object
onRetainNonConfigurationInstance() {
return map.retainState();
}
}
mail.xml
encoding="utf-8"?>
android:layout_width="fill_parent"
android:layout_height="fill_parent">
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map" android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:id="@+id/gLayer"/>
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true" >
android:text="放大"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"/>
android:text="缩小"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
AndroidManifest.xml
encoding="utf-8"?>
package="com.arcgis.load"
android:versionCode="1"
android:versionName="1.0">
android:label="@string/app_name">
android:label="@string/app_name">
/>
android:name="android.intent.category.LAUNCHER"
/>
android:name="android.permission.INTERNET">
android:name="android.permission.WRITE_EXTERNAL_STORAGE">
android:name="android.permission.ACCESS_FINE_LOCATION">
android:name="android.permission.ACCESS_GPS"
/>
android:name="android.permission.ACCESS_FINE_LOCATION"
/>
/>