2016-09-25 8 views
0

がSpatialReferenceをArcGISで動作させようとしていて、何をしようとしてもうまくいきません。ここ が私のコードであるArcGISでArcGISの

wgs84 = SpatialReference.create(SpatialReference.WKID_WGS84); 


    SimpleMarkerSymbol simpleMarker = new SimpleMarkerSymbol(Color.RED, 5,SimpleMarkerSymbol.STYLE.CIRCLE); 


    Point pointGeometry = new Point(-35.238019 ,149.083404,0,SpatialReference.WKID_WGS84); 
    /* Point pointGeometry = new Point(16596066.8,-3896170.7);*/ 

    Graphic pointGraphic = new Graphic(pointGeometry, simpleMarker); 


    mGraphicsLayer.addGraphic(pointGraphic); 
+1

経度(x)、緯度(y)....あなたはそれらを後方に持っています – NaN

+0

ps。あなたは本当にここで答えを探している必要がありますhttps://geonet.esri.com/welcome言語とapiによってセクションがあります – NaN

+0

私の問題は、WKID._WGS84を使用していないと、デフォルトを使用しています – blackhawkfound

答えて

0

2つの問題:

  1. 正しい順序で座標を指定します。座標を指定するときは、ArcGIS Runtimeのドキュメント(10.2.xQuartz)を調べて、使用する順序を確認する必要があります。 Pointを作成するときは、最初にX(経度)を指定してからY(緯度)を指定します。 149.083404は有効な緯度ではありませんので、私はそれが経度であることを意味していると思います。それらを切り替えます。
  2. ドキュメンテーションに「経度」と「緯度」と表示されていない限り、マップの座標を仮定します。つまり、とyではなく、longitudelatitudeのパラメータを持つメソッドを呼び出す場合を除き、GeometryEngine.projectを使用して、マップの空間参照にポイントを投影する必要があります。

あなたが10.2.xを使用しているのか、Quartz Betaを使用しているのかは分かりません。それぞれの要素を使用しているのかどうかはわかりません。

クォーツ(あなたはレイアウト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ファイルにMapOptionsMapViewを宣言していると仮定し):

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(); 
    } 
}