I have a KML file in my local PC in D drive(say). I want to upload this over my Basemap(oceans). How can I achieve it?
Please provide any sample code or example if available.
Two suggestions.
Store it in your raw resources directory and then load this locally from your android device.
Or
Upload this to ArcGIS Online and then open the map that contains the KML file.
import android.graphics.Color; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; import com.esri.arcgisruntime.ArcGISRuntimeEnvironment; import com.esri.arcgisruntime.LicenseInfo; import com.esri.arcgisruntime.concurrent.Job; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.Envelope; import com.esri.arcgisruntime.geometry.Geometry; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.geometry.SpatialReference; import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.loadable.LoadStatus; import com.esri.arcgisruntime.mapping.ArcGISMap; import com.esri.arcgisruntime.mapping.Basemap; import com.esri.arcgisruntime.mapping.Viewpoint; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; import com.esri.arcgisruntime.mapping.view.LayerViewStateChangedListener; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.portal.Portal; import com.esri.arcgisruntime.portal.PortalInfo; import com.esri.arcgisruntime.security.UserCredential; import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; import com.esri.arcgisruntime.tasks.geodatabase.GenerateGeodatabaseJob; import com.esri.arcgisruntime.tasks.geodatabase.GenerateGeodatabaseParameters; import com.esri.arcgisruntime.tasks.geodatabase.GeodatabaseSyncTask; import org.xmlpull.v1.XmlPullParserException; import java.io.File; import java.io.IOException; import java.util.List; import java.util.concurrent.ExecutionException; import static com.esri.arcgisruntime.sample5.esri5.R.raw.linestring; public class MainActivity extends AppCompatActivity { private MapView mMapView; private final SpatialReference wgs84 = SpatialReference.create(4326); String TAG = "aa"; GeodatabaseSyncTask gdbSyncTask; ArcGISMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.mapView); UserCredential credential = new UserCredential("########", "########"); final Portal portal = new Portal("https://##########-#####.maps.arcgis.com/"); portal.setCredential(credential); portal.loadAsync(); portal.addDoneLoadingListener(new Runnable() { @Override public void run() { if (portal.getLoadStatus() == LoadStatus.LOADED) { PortalInfo portalInformation = portal.getPortalInfo(); String portalName = portalInformation.getPortalName(); Log.i(TAG, portalName); } LicenseInfo licenseInfo = portal.getPortalInfo().getLicenseInfo(); Log.i(TAG, licenseInfo.toJson()); ArcGISRuntimeEnvironment.setLicense(licenseInfo); } }); Envelope envelope = new Envelope(86.9974, 22.4550, 89.5403, 22.8456, SpatialReferences.getWgs84()); map = new ArcGISMap(Basemap.createImagery()); Viewpoint initViewpoint = new Viewpoint(envelope); map.setInitialViewpoint(initViewpoint); mMapView.setMap(map); KmlLayer layer = new KmlLayer(map, linestring, getApplicationContext()); layer.addLayerToMap(layer); } }
This is what I have done so far. But unable to find any Appropriate package(com.esri.arcgisruntime) from this KmlLayer class . i have also put my KML(linesting.kml) in raw folder.I am using gradle :
compile 'com.esri.arcgisruntime:arcgis-android:100.0.0'
Please help me.
Thanks in advance.
Excuse my mistake. I was thinking back to the previous release.
Currently, I do not believe that KML layers are supported.
Thanks,
Alexander