两个问题:
- 指定正确的顺序坐标。无论何时指定坐标,都需要检查ArcGIS Runtime文档(10.2.x,Quartz)以查看要使用的订单。在创建
Point
时,首先指定X(经度),然后指定Y(纬度)。 149.083404不是有效的纬度,所以我认为你的意思是经度。切换它们。
- 除非文档中提到“经度”和“纬度”,否则假定地图坐标。这意味着您需要使用
GeometryEngine.project
将您的要点投影到地图的空间参考中,除非您调用参数为longitude
和latitude
而不是x
和y
的方法。
我不能告诉你是否使用10.2.x或Quartz Beta - 你使用的是每个元素 - 所以这里是一个使用每个API的工作示例。
石英(假定您已经声明在布局XML一个MapView
):
public class MainActivity extends AppCompatActivity {
private MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.mapView);
// ArcGISMap constructor takes latitude (Y) first
ArcGISMap map = new ArcGISMap(Basemap.Type.TOPOGRAPHIC,
-35.238019, 149.083404, 10);
mMapView.setMap(map);
GraphicsOverlay graphicsLayer= new GraphicsOverlay();
mMapView.getGraphicsOverlays().add(graphicsLayer);
SimpleMarkerSymbol simpleMarker = new SimpleMarkerSymbol(
SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 5);
// Point constructor takes X (longitude) first
Point pointGeometry = new Point(
149.083404, -35.238019, 0, SpatialReference.create(4326));
Graphic pointGraphic = new Graphic(pointGeometry, simpleMarker);
graphicsLayer.getGraphics().add(pointGraphic);
}
@Override
protected void onPause(){
mMapView.pause();
super.onPause();
}
@Override
protected void onResume(){
super.onResume();
mMapView.resume();
}
}
10.2.x中(假定您已经声明的布局XML文件中MapOptions
一个MapView
):
public class MainActivity extends AppCompatActivity {
private MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {
@Override
public void onStatusChanged(Object o, STATUS status) {
if (STATUS.INITIALIZED.equals(status)) {
// MapOptions constructor takes latitude (Y) first
MapOptions mapOptions = new MapOptions(
MapOptions.MapType.TOPO, -35.238019, 149.083404, 10);
mMapView.setMapOptions(mapOptions);
GraphicsLayer graphicsLayer = new GraphicsLayer();
mMapView.addLayer(graphicsLayer);
SimpleMarkerSymbol simpleMarker = new SimpleMarkerSymbol(
Color.RED, 5, SimpleMarkerSymbol.STYLE.CIRCLE);
// GeometryEngine.project takes X (longitude) first
Point pointGeometry = GeometryEngine.project(
149.083404, -35.238019, mMapView.getSpatialReference());
Graphic pointGraphic = new Graphic(pointGeometry, simpleMarker);
graphicsLayer.addGraphic(pointGraphic);
}
}
});
}
@Override
protected void onPause(){
mMapView.pause();
super.onPause();
}
@Override
protected void onResume(){
super.onResume();
mMapView.unpause();
}
}
经度(x),纬度(y)....你有他们的后向 – NaN
ps。你真的应该在这里寻找答案https://geonet.esri.com/welcome有部分语言和api – NaN
我的问题是,不使用WKID._WGS84并使用任何默认值 – blackhawkfound