Skip to content

Commit 3f7da91

Browse files
committed
Merge branch 'v.next' into 100.13.0
2 parents 3080860 + 4729f6b commit 3f7da91

File tree

10 files changed

+599
-0
lines changed

10 files changed

+599
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Display dimensions
2+
3+
Display dimension features from a mobile map package.
4+
5+
![Image showing the Display Dimensions sample](DisplayDimensions.png)
6+
7+
## Use case
8+
9+
Dimensions show specific lengths or distances on a map. A dimension may indicate the length of a side of a building or land parcel, or the distance between two features, such as a fire hydrant and the corner of a building.
10+
11+
## How to use the sample
12+
13+
When the sample loads, it will automatically display the map containing dimension features from the mobile map package. The name of the dimension layer containing the dimension features is displayed in the controls box. Control the visibility of the dimension layer with the "Dimension Layer visibility" check box, and apply a definition expression to show dimensions of greater than or equal to 450m in length using the "Definition Expression" checkbox.
14+
15+
## How it works
16+
17+
1. Create a `MobileMapPackage` specifying the path to the .mmpk file.
18+
2. Load the mobile map package with `mmpk.loadAsync()`.
19+
3. After it successfully loads, get the map from the mmpk and add it to the map view: `mapView.setMap(mmpk.getMaps().get(0))`.
20+
4. Loop through the map's layers to create a `DimensionLayer` and set the name of the layer to the UI with `dimensionLayer.getName()`.
21+
5. Control the dimension layer's visibility with `dimensionLayer.setVisible(boolean)` and set a definition expression with `dimensionLayer.setDefinitionExpression(String)`.
22+
23+
## Relevant API
24+
25+
* DimensionLayer
26+
* MobileMapPackage
27+
28+
## About the data
29+
30+
This sample shows a subset of the Edinburgh, Scotland network of pylons, substations, and powerlines within an [Edinburgh Pylon Dimensions mobile map package](https://arcgis.com/home/item.html?id=f5ff6f5556a945bca87ca513b8729a1e), digitized from satellite imagery. Note the data is intended as illustrative of the network only.
31+
32+
## Additional information
33+
34+
Dimension layers can be taken offline from a feature service hosted on ArcGIS Enterprise 10.9 or later, using the [GeodatabaseSyncTask](https://developers.arcgis.com/java/api-reference/reference/com/esri/arcgisruntime/tasks/geodatabase/GeodatabaseSyncTask.html). Dimension layers are also supported in mobile map packages or mobile geodatabases created in ArcGIS Pro 2.9 or later.
35+
36+
## Tags
37+
38+
dimension, layer, mmpk, mobile map package, utility
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"category": "Display information",
3+
"description": "Display dimension features from a mobile map package.",
4+
"ignore": false,
5+
"images": [
6+
"DisplayDimensions.png"
7+
],
8+
"keywords": [
9+
"dimension",
10+
"layer",
11+
"mmpk",
12+
"mobile map package",
13+
"utility",
14+
"DimensionLayer",
15+
"MobileMapPackage"
16+
],
17+
"redirect_from": "",
18+
"relevant_apis": [
19+
"DimensionLayer",
20+
"MobileMapPackage"
21+
],
22+
"snippets": [
23+
"src/main/java/com/esri/samples/display_dimensions/DisplayDimensionsSample.java"
24+
],
25+
"title": "Display dimensions"
26+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
plugins {
2+
id 'application'
3+
id 'org.openjfx.javafxplugin' version '0.0.8'
4+
}
5+
6+
group = 'com.esri.samples'
7+
8+
ext {
9+
arcgisVersion = '100.13.0'
10+
}
11+
12+
javafx {
13+
version = "11.0.2"
14+
modules = [ 'javafx.controls' ]
15+
}
16+
17+
compileJava.options.encoding = 'UTF-8'
18+
19+
repositories {
20+
mavenCentral()
21+
maven {
22+
url 'https://esri.jfrog.io/artifactory/arcgis'
23+
}
24+
maven {
25+
url 'https://olympus.esri.com/artifactory/arcgisruntime-repo'
26+
}
27+
}
28+
29+
configurations {
30+
natives
31+
}
32+
33+
dependencies {
34+
implementation "com.esri.arcgisruntime:arcgis-java:$arcgisVersion"
35+
natives "com.esri.arcgisruntime:arcgis-java-jnilibs:$arcgisVersion"
36+
natives "com.esri.arcgisruntime:arcgis-java-resources:$arcgisVersion"
37+
// handle SLF4J http://www.slf4j.org/codes.html#StaticLoggerBinder
38+
runtimeOnly 'org.slf4j:slf4j-nop:1.7.32'
39+
implementation 'org.jooq:joox:1.4.0'
40+
}
41+
42+
task createGradlePropertiesAndWriteApiKey {
43+
description = "Creates a new gradle.properties file with an empty API key variable in the user home ./gradle folder, if the file doesn't already exist."
44+
group = "build"
45+
def propertiesFile = new File("${System.properties.getProperty("user.home")}/.gradle/gradle.properties")
46+
if (!propertiesFile.exists()) {
47+
print("Go to " + new URL("https://developers.arcgis.com/dashboard") + " to get an API key.")
48+
print(" Add your API key to ${System.properties.getProperty("user.home")}\\.gradle\\gradle.properties.")
49+
propertiesFile.write("apiKey = ")
50+
}
51+
}
52+
53+
task copyNatives(type: Copy) {
54+
description = "Copies the arcgis native libraries into the project build directory for development."
55+
group = "build"
56+
configurations.natives.asFileTree.each {
57+
from(zipTree(it))
58+
}
59+
// store native libraries in a common location shared with other samples
60+
into "${System.properties.getProperty("user.home")}/.arcgis/$arcgisVersion"
61+
}
62+
63+
run {
64+
doFirst {
65+
// sets the API key from the gradle.properties file as a Java system property
66+
systemProperty 'apiKey', apiKey
67+
}
68+
dependsOn copyNatives
69+
mainClassName = 'com.esri.samples.display_dimensions.DisplayDimensionsLauncher'
70+
}
71+
72+
jar {
73+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
74+
manifest {
75+
attributes("Main-Class": "$mainClassName")
76+
}
77+
from {
78+
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
79+
}
80+
81+
// exclude signing files that come from dependencies
82+
exclude "META-INF/*.SF"
83+
exclude "META-INF/*.DSA"
84+
exclude "META-INF/*.RSA"
85+
}
86+
87+
task productionZip(type: Zip) {
88+
group = 'distribution'
89+
from ("samples-data") {
90+
into "samples-data"
91+
}
92+
from copyNatives
93+
from jar.destinationDirectory
94+
into (project.name)
95+
archiveBaseName = project.name
96+
}
97+
98+
wrapper {
99+
gradleVersion = '7.3'
100+
}
179 KB
Loading
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
#!/usr/bin/env sh
2+
3+
##############################################################################
4+
##
5+
## Gradle start up script for UN*X
6+
##
7+
##############################################################################
8+
9+
# Attempt to set APP_HOME
10+
# Resolve links: $0 may be a link
11+
PRG="$0"
12+
# Need this for relative symlinks.
13+
while [ -h "$PRG" ] ; do
14+
ls=`ls -ld "$PRG"`
15+
link=`expr "$ls" : '.*-> \(.*\)$'`
16+
if expr "$link" : '/.*' > /dev/null; then
17+
PRG="$link"
18+
else
19+
PRG=`dirname "$PRG"`"/$link"
20+
fi
21+
done
22+
SAVED="`pwd`"
23+
cd "`dirname \"$PRG\"`/" >/dev/null
24+
APP_HOME="`pwd -P`"
25+
cd "$SAVED" >/dev/null
26+
27+
APP_NAME="Gradle"
28+
APP_BASE_NAME=`basename "$0"`
29+
30+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31+
DEFAULT_JVM_OPTS=""
32+
33+
# Use the maximum available, or set MAX_FD != -1 to use that value.
34+
MAX_FD="maximum"
35+
36+
warn () {
37+
echo "$*"
38+
}
39+
40+
die () {
41+
echo
42+
echo "$*"
43+
echo
44+
exit 1
45+
}
46+
47+
# OS specific support (must be 'true' or 'false').
48+
cygwin=false
49+
msys=false
50+
darwin=false
51+
nonstop=false
52+
case "`uname`" in
53+
CYGWIN* )
54+
cygwin=true
55+
;;
56+
Darwin* )
57+
darwin=true
58+
;;
59+
MINGW* )
60+
msys=true
61+
;;
62+
NONSTOP* )
63+
nonstop=true
64+
;;
65+
esac
66+
67+
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68+
69+
# Determine the Java command to use to start the JVM.
70+
if [ -n "$JAVA_HOME" ] ; then
71+
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72+
# IBM's JDK on AIX uses strange locations for the executables
73+
JAVACMD="$JAVA_HOME/jre/sh/java"
74+
else
75+
JAVACMD="$JAVA_HOME/bin/java"
76+
fi
77+
if [ ! -x "$JAVACMD" ] ; then
78+
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79+
80+
Please set the JAVA_HOME variable in your environment to match the
81+
location of your Java installation."
82+
fi
83+
else
84+
JAVACMD="java"
85+
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86+
87+
Please set the JAVA_HOME variable in your environment to match the
88+
location of your Java installation."
89+
fi
90+
91+
# Increase the maximum file descriptors if we can.
92+
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93+
MAX_FD_LIMIT=`ulimit -H -n`
94+
if [ $? -eq 0 ] ; then
95+
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96+
MAX_FD="$MAX_FD_LIMIT"
97+
fi
98+
ulimit -n $MAX_FD
99+
if [ $? -ne 0 ] ; then
100+
warn "Could not set maximum file descriptor limit: $MAX_FD"
101+
fi
102+
else
103+
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104+
fi
105+
fi
106+
107+
# For Darwin, add options to specify how the application appears in the dock
108+
if $darwin; then
109+
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110+
fi
111+
112+
# For Cygwin, switch paths to Windows format before running java
113+
if $cygwin ; then
114+
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115+
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116+
JAVACMD=`cygpath --unix "$JAVACMD"`
117+
118+
# We build the pattern for arguments to be converted via cygpath
119+
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120+
SEP=""
121+
for dir in $ROOTDIRSRAW ; do
122+
ROOTDIRS="$ROOTDIRS$SEP$dir"
123+
SEP="|"
124+
done
125+
OURCYGPATTERN="(^($ROOTDIRS))"
126+
# Add a user-defined pattern to the cygpath arguments
127+
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128+
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129+
fi
130+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
131+
i=0
132+
for arg in "$@" ; do
133+
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134+
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135+
136+
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137+
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138+
else
139+
eval `echo args$i`="\"$arg\""
140+
fi
141+
i=$((i+1))
142+
done
143+
case $i in
144+
(0) set -- ;;
145+
(1) set -- "$args0" ;;
146+
(2) set -- "$args0" "$args1" ;;
147+
(3) set -- "$args0" "$args1" "$args2" ;;
148+
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149+
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150+
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151+
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152+
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153+
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154+
esac
155+
fi
156+
157+
# Escape application args
158+
save () {
159+
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160+
echo " "
161+
}
162+
APP_ARGS=$(save "$@")
163+
164+
# Collect all arguments for the java command, following the shell quoting and substitution rules
165+
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166+
167+
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168+
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169+
cd "$(dirname "$0")"
170+
fi
171+
172+
exec "$JAVACMD" "$@"

0 commit comments

Comments
 (0)