Comments (11)
@aminabvaal have you seen the section above in the document titled: Identify a map area to download
So have you already for a webmap set up with a pre-planned area?
To ensure I'm pointing you in the right direction it would be good to understand what you are trying to do.
If your data is stored in ArcGIS Online then have you decided to use pre-planned areas or on demand workflows?
If your data exists in files such as shapefile or geopackage then you should follow a different approach.
There are easy solutions but it would help if you clearly explained what you are trying to do:
- Where is your data stored?
- What does your application need to do? I've established it needs to work offline.
- Do you need to update the data whilst offline and then sync it back?
It may help of you contact your local ESRI office, if you are totally stuck.
from arcgis-maps-sdk-java-samples.
@mbcoder idon't need your above comment ..i just need a few code line or link to download .mmpk file for load all map of world
from arcgis-maps-sdk-java-samples.
just like
\arcgis-runtime-samples-java\samples-data\mmpk\SanFrancisco.mmpk
i need all mmpk file for all world how to show all world in app when app is offline
from arcgis-maps-sdk-java-samples.
i read this doc::
A mobile map package is a file object (.mmpk) created in ArcGIS Pro. It is a transport mechanism for maps, their layers, data, networks, and locators. A mobile map package can be sideloaded onto a device by email, or by platform-specific transfer mechanism, or it can be downloaded from a portal to the device.
how can i be download this mmpk file from a portal to my device
from arcgis-maps-sdk-java-samples.
mmpk files can be generated from 2 locations:
- A you've pointed out above, you can use the ArcGIS Pro application to generate one for you.
- Alternatively you can also publish your data in ArcGIS Online and download from a server
In the second approach (ArcGIS Online), your data will be in what is called a web map. You can extract this into an mmpk via the on-demand method (this sounds like what you should do), or pre-planned (which is well suited if you regularly want to download the same areas). The pre-planned areas need to be configured in ArcGIS Online.
In the on-demand method, you just get the SDK to ask for the offline map which once generated will be downloade as an mmpk.
The section titled "On-demand workflow" in this page (scroll down lots) explains how to download an mmpk: https://developers.arcgis.com/java/latest/guide/create-an-offline-map.htm
You mention that you are working with data for the entire world. Take great care that you don't ask the server to generate a mmpk with a basemap for all levels of detail. This will result in a massive dataset. Limit the levels of detail for your download in the basemap. I would also encourage you to set up your webmap so that it uses a vector basemap. Vector basemaps are much smaller when downloaded onto a device when you are working with a large area.
from arcgis-maps-sdk-java-samples.
it looks you put me in infinite loop ...
https://developers.arcgis.com/java/latest/guide/create-an-offline-map.htm
my first message is about this page ...
in this line:
`
// create an offline map task OfflineMapTask offlineMapTask = new OfflineMapTask(map);
// create the job DownloadPreplannedOfflineMapJob downloadJob = in
offlineMapTask.downloadPreplannedOfflineMap(mapArea, downloadPath)`
what is mapArea
object and how to be initialized
how to specify an particular area such as a continent or country
in App I need all over the world how to specify thismapArea Object ??
thanks
from arcgis-maps-sdk-java-samples.
you put me in infinite loop ::
my first above msg is about this page you told recently
https://developers.arcgis.com/java/latest/guide/create-an-offline-map.htm
i read this doc
https://developers.arcgis.com/android/latest/guide/create-an-offline-map.htm
and i reach this lines ::
// create an offline map task OfflineMapTask offlineMapTask = new OfflineMapTask(map); // create the job DownloadPreplannedOfflineMapJob downloadJob = offlineMapTask.downloadPreplannedOfflineMap(mapArea, downloadPath);
in offlineMapTask.downloadPreplannedOfflineMap(mapArea, downloadPath)
what is mapArea
object and how to be initialized
how to specify an particular area such as a continent or country
in App I need all over the world how to specify this mapArea
Object ??
please put an code example of this mapArea initialized
from arcgis-maps-sdk-java-samples.
i want just a code exapme that implement downloading map area and use it in offline mode
from arcgis-maps-sdk-java-samples.
Take great care that you don't ask the server to generate a mmpk with a basemap for all levels of detail.
which server ...which server you are talking about
just change your talking to clarified code to use that
i just want handle this issue not learn more
from arcgis-maps-sdk-java-samples.
@aminabvaal
Create a free account at https://www.arcgis.com/home/createaccount.html. You must do this to take maps offline.
Then use this code to download a map area for offline use. Change the file path to the directory you want to download to. Also play with the minScale and maxScale.
package com.esri.samples.map.generate_offline_map;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Point2D;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import com.esri.arcgisruntime.concurrent.Job;
import com.esri.arcgisruntime.geometry.Envelope;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.loadable.LoadStatus;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.view.Graphic;
import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.portal.Portal;
import com.esri.arcgisruntime.portal.PortalItem;
import com.esri.arcgisruntime.security.AuthenticationManager;
import com.esri.arcgisruntime.security.DefaultAuthenticationChallengeHandler;
import com.esri.arcgisruntime.symbology.SimpleLineSymbol;
import com.esri.arcgisruntime.tasks.offlinemap.GenerateOfflineMapJob;
import com.esri.arcgisruntime.tasks.offlinemap.GenerateOfflineMapParameters;
import com.esri.arcgisruntime.tasks.offlinemap.GenerateOfflineMapResult;
import com.esri.arcgisruntime.tasks.offlinemap.OfflineMapTask;
public class GenerateOfflineMapSample extends Application {
private MapView mapView;
@Override
public void start(Stage stage) {
try {
// create stack pane and application scene
StackPane stackPane = new StackPane();
Scene scene = new Scene(stackPane);
// set title, size, and add scene to stage
stage.setTitle("Generate Offline Map Sample");
stage.setWidth(800);
stage.setHeight(700);
stage.setScene(scene);
stage.show();
// create a button to take the map offline
Button offlineMapButton = new Button("Take Map Offline");
offlineMapButton.setDisable(true);
// handle authentication with the portal
AuthenticationManager.setAuthenticationChallengeHandler(new DefaultAuthenticationChallengeHandler());
// create a portal item with the itemId of the web map
Portal portal = new Portal("https://www.arcgis.com", true);
PortalItem portalItem = new PortalItem(portal, "86265e5a4bbb4187a59719cf134e0018");
// create a map with the portal item
ArcGISMap map = new ArcGISMap(portalItem);
map.addDoneLoadingListener(() -> {
// enable the button when the map is loaded
if (map.getLoadStatus() == LoadStatus.LOADED) {
offlineMapButton.setDisable(false);
}
});
// set the map to the map view
mapView = new MapView();
mapView.setMap(map);
// create a graphics overlay for the map view
GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
mapView.getGraphicsOverlays().add(graphicsOverlay);
// create a graphic to show a box around the extent we want to download
Graphic downloadArea = new Graphic();
graphicsOverlay.getGraphics().add(downloadArea);
SimpleLineSymbol simpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, 0xFFFF0000, 2);
downloadArea.setSymbol(simpleLineSymbol);
// update the box whenever the viewpoint changes
mapView.addViewpointChangedListener(viewpointChangedEvent -> {
if (map.getLoadStatus() == LoadStatus.LOADED) {
// upper left corner of the area to take offline
Point2D minScreenPoint = new Point2D(50, 50);
// lower right corner of the downloaded area
Point2D maxScreenPoint = new Point2D(mapView.getWidth() - 50, mapView.getHeight() - 50);
// convert screen points to map points
Point minPoint = mapView.screenToLocation(minScreenPoint);
Point maxPoint = mapView.screenToLocation(maxScreenPoint);
// use the points to define and return an envelope
if (minPoint != null && maxPoint != null) {
Envelope envelope = new Envelope(minPoint, maxPoint);
downloadArea.setGeometry(envelope);
}
}
});
// create progress bar to show download progress
ProgressBar progressBar = new ProgressBar();
progressBar.setProgress(0.0);
progressBar.setVisible(false);
// when the button is clicked, start the offline map task job
offlineMapButton.setOnAction(e -> {
// show the progress bar
progressBar.setVisible(true);
GenerateOfflineMapParameters params = new GenerateOfflineMapParameters(downloadArea.getGeometry(),
mapView.getMapScale() + 10000, mapView.getMapScale());
// create an offline map task with the map
OfflineMapTask task = new OfflineMapTask(map);
// create an offline map job with the download directory path and parameters and start the job
GenerateOfflineMapJob job = task.generateOfflineMap(params, "C:/Users/tyle8552/Desktop/mmpk");
job.start();
job.addJobDoneListener(() -> {
if (job.getStatus() == Job.Status.SUCCEEDED) {
// replace the current map with the result offline map when the job finishes
GenerateOfflineMapResult result = job.getResult();
mapView.setMap(result.getOfflineMap());
graphicsOverlay.getGraphics().clear();
offlineMapButton.setDisable(true);
} else {
new Alert(Alert.AlertType.ERROR, job.getError().getAdditionalMessage()).show();
}
Platform.runLater(() -> progressBar.setVisible(false));
});
// show the job's progress with the progress bar
job.addProgressChangedListener(() -> progressBar.setProgress(job.getProgress() / 100.0));
});
// add the map view, button, and progress bar to stack pane
stackPane.getChildren().addAll(mapView, offlineMapButton, progressBar);
StackPane.setAlignment(offlineMapButton, Pos.TOP_LEFT);
StackPane.setAlignment(progressBar, Pos.TOP_RIGHT);
} catch (Exception e) {
// on any error, display the stack trace.
e.printStackTrace();
}
}
/**
* Stops and releases all resources used in application.
*/
@Override
public void stop() {
if (mapView != null) {
mapView.dispose();
}
}
/**
* Opens and runs application.
*
* @param args arguments passed to this application
*/
public static void main(String[] args) {
Application.launch(args);
}
}
Now that you have an offline map saved to your computer, you can use this app to read it back in for displaying offline:
package com.esri.samples.map.open_mobile_map_package;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import com.esri.arcgisruntime.loadable.LoadStatus;
import com.esri.arcgisruntime.mapping.MobileMapPackage;
import com.esri.arcgisruntime.mapping.view.MapView;
public class OpenMobileMapPackageSample extends Application {
private MapView mapView;
@Override
public void start(Stage stage) {
try {
// create stack pane and application scene
StackPane stackPane = new StackPane();
Scene scene = new Scene(stackPane);
// set title, size, and add scene to stage
stage.setTitle("Open Mobile Map Package Sample");
stage.setWidth(800);
stage.setHeight(700);
stage.setScene(scene);
stage.show();
// create a map view
mapView = new MapView();
//load a mobile map package
MobileMapPackage mobileMapPackage = new MobileMapPackage("C:/Users/tyle8552/Desktop/mmpk");
mobileMapPackage.loadAsync();
mobileMapPackage.addDoneLoadingListener(() -> {
if (mobileMapPackage.getLoadStatus() == LoadStatus.LOADED && mobileMapPackage.getMaps().size() > 0) {
//add the map from the mobile map package to the map view
mapView.setMap(mobileMapPackage.getMaps().get(0));
} else {
Alert alert = new Alert(Alert.AlertType.ERROR, "Failed to load the mobile map package");
alert.show();
}
});
// add the map view to stack pane
stackPane.getChildren().add(mapView);
} catch (Exception e) {
// on any error, display the stack trace.
e.printStackTrace();
}
}
/**
* Stops and releases all resources used in application.
*/
@Override
public void stop() {
if (mapView != null) {
mapView.dispose();
}
}
/**
* Opens and runs application.
*
* @param args arguments passed to this application
*/
public static void main(String[] args) {
Application.launch(args);
}
}
Hope that helps.
from arcgis-maps-sdk-java-samples.
Closing due to inactivity.
from arcgis-maps-sdk-java-samples.
Related Issues (20)
- Improve progress indicators for long-running async tasks HOT 1
- Update Geometries NullPointer if no feature identified with click
- Symbol Dictionary Search with no Input
- Importing project into Eclipse HOT 4
- Portal: samples can be updated using Default Authentication HOT 3
- ArcGIS Gradle Plugin will not configure properly. HOT 3
- Is there a size limitation of mobile map package for opening in App studio. HOT 1
- Update style file HOT 5
- Adding Progress Indicator HOT 1
- Local Server Load Error; Local Geoprocessing Failed to load.; in running LocalServerMapImageLayerSample sample HOT 15
- Bad metadata file HOT 4
- "Integrated windows authentication" throws error when connecting with an IWA authenticated Portal for ArcGIS instance. HOT 3
- Cant build with gradle HOT 5
- Can't download get from mvnrepository ,Prompt to deny access HOT 1
- Feedback for new gradle.properties instructions for working with API keys HOT 1
- When building build.gradle could not find apiKey system property even though the apiKey is in the gradle.properties filr HOT 5
- [Generate-offline-map] Boundary outline become smaller when rotate map HOT 4
- Request for samples with Maven
- Geometry Engine sample readme improvements HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arcgis-maps-sdk-java-samples.