POST
|
map.enableSnapping() is a convenient method. You can achieve the same result by creating a new snappingManager.
... View more
01-15-2014
02:45 PM
|
0
|
0
|
735
|
POST
|
There are many ways to implement slide in/out effect. Here is a simple code using dojo/_base/fx.
var slide = function (rightDomId, open, map) {
var width = window.innerWidth;
var sliderWidth = open ? 250 : 0;
var mapWidth = open ? width - 250 : width;
fx.animateProperty({
node: rightDomId,
properties: {
width: sliderWidth
},
onEnd: function () {
var slider = dom.byId(rightDomId);
var visible;
if (parseInt(slider.style.width) < 100) {
visible = "none";
} else {
visible = "block";
}
domStyle.set(slider, {
display: visible
});
}
}).play();
fx.animateProperty({
node: map.id,
properties: {
width: mapWidth
},
onEnd: function () {
map.resize();
}
}).play();
};
var slideIn = function (rightDomId, map) {
slide(rightDomId, true, map);
};
var slideOut = function (rightDomId, map) {
slide(rightDomId, false, map);
};
... View more
01-13-2014
01:00 PM
|
0
|
0
|
195
|
POST
|
When you set selectionSymbol, that means when the feature is selected, this symbol will 'replace' the original symbol, instead of overlay on top of it. You need to create a new graphic with the same geometry and the hightlight symbol, and add it to the map.graphics layer to achieve the visual effect.
... View more
01-08-2014
11:44 AM
|
0
|
0
|
357
|
POST
|
As far as I understand, you cannot publish your own locator through arcgis.com. You have to have an ArcGIS Server running on your machine. You may want to ask the question on arcgis.com forum to get confirmed.
... View more
01-08-2014
11:41 AM
|
0
|
0
|
250
|
POST
|
You can create a locator based on point of interests and publish it as a geocode service. JavaScript Geocoder Widget can have multiple geocode services. Or, you can tweak the geocoder widget a little bit:
//add feature key words to geocode widget search box
dojo.connect(geocoderWidget, "onAutoComplete", function (e) {
if (geocoderWidget.value.length < 4) {
return;
}
array.forEach(layerList, function (layer) {
if (layer.declaredClass === "esri.layers.FeatureLayer" && layer.visible === true) {
var keyWordField = layer.displayField;
var searchedFeatures = array.filter(layer.graphics, function (feature) {
return feature.attributes[keyWordField] ? feature.attributes[keyWordField].toLowerCase().indexOf(geocoderWidget.value.toLowerCase()) > -1 : false;
});
var result;
array.forEach(searchedFeatures, function (feature) {
result = {
feature: feature,
extent: new Extent(feature.geometry.x - 1000, feature.geometry.y - 1000, feature.geometry.x + 1000, feature.geometry.y + 1000, feature.geometry.spatialReference),
name: feature.attributes[keyWordField]
};
e.results.splice(0, 0, result);
});
}
});
if (e.results.length > 6) {
e.results.splice(6, e.results.length - 6);
}
});
dojo.connect(geocoderWidget, "onSelect", function (e) {
var query = new Query();
var fl = e.feature.getLayer();
if (!fl) {
return;
}
query.where = fl.displayField + "='" + e.name + "'";
fl.queryFeatures(query, function (result) {
var feature = result.features[0];
//now you have the selected feature
});
});
... View more
01-08-2014
11:10 AM
|
0
|
0
|
250
|
POST
|
That should work. That's the same logic as I suggested. Here is a simple code running on nodejs to generate token. 1. you don't have to generate a new token every time when a user opens the web app. You can share the common one as long as it's still not expired. 2. On client side, you need to call setInterval(function(){'gettokenfunction'}, 2 hours);
var ex = require("express");
var app = ex();
var http = require("http"),
qs = require("querystring");
var userToken, userTokenExpire;
var getToken = function(userInfo, res){
var currentTime = new Date().getTime();
if (userToken && (userTokenExpire && userTokenExpire - 7200000 > currentTime) ) {
//-7200000 (it's 2 hours) ensures the token is valid for at least next 2 hours.
//any new request within the 2 hours will create a new token.
res.send({token: userToken, expires: userTokenExpire});
}
else {
var options = {
method: "POST",
host: /*ip address here*/,
path: "http://arcgisserverdomain/arcgis/admin/generateToken",
headers: {"Connection": "keep-alive", "host": /*ip address*/, "Content-Type": "application/x-www-form-urlencoded"}
};
var postData = qs.stringify({
username: userInfo.username,
password: userInfo.password,
client: "referer",
referer: "http://yourwebsitedomain/",
f: "json",
expiration:1440 //it can be up to 24 hours, which is 24*60 minutes
});
var request = http.request(options, function(response){
response.setEncoding('utf8');
response.on('data', function (chunk) {
userToken = JSON.parse(chunk).token;
console.log(userToken);
userTokenExpire = JSON.parse(chunk).expires;
console.log(userTokenExpire);
res.send(chunk);
});
});
request.write(postData);
request.end();
}
};
app.get("/gettoken", function(req, res){
var userInfo = {};
//userInfo.username = req.query.username;
//userInfo.password = req.query.password;
//if (!userInfo.username && !userInfo.password) {
//since you don't need user to provide username and password, hard-code it.
userInfo.password = username;
userInfo.username = password;
//}
getToken(userInfo, res);
});
app.listen(3000);
... View more
01-08-2014
10:42 AM
|
0
|
0
|
2170
|
POST
|
I think you should make the map (meaning the web map json) public, and secure the data (feature service, map service and so on.).
... View more
01-08-2014
10:12 AM
|
0
|
0
|
2170
|
POST
|
The default selection symbol is a very special one, which is not supported by print service. We will change it to SVG symbol in the future release. By now, you can unselect it before printing. If you still want to highlight that point in your printout, you can add another graphic with a different symbol on top of the graphic.
... View more
01-08-2014
10:07 AM
|
0
|
2
|
1047
|
POST
|
1. No, you don't have to reproject it to other projection. Regardless the current coordinate system, when choosing geodesic, it is truly geodesic result. 2. Yes, you can get very close result. But you cannot get the exact same result. Because there is no such a coordinate system to truly match planar and geodesic at the same time. 3. No.
... View more
01-08-2014
10:02 AM
|
0
|
0
|
285
|
POST
|
When you share the map in arcgis.com viewer, did you select share to public?
... View more
01-07-2014
12:10 PM
|
0
|
0
|
2170
|
POST
|
After createMap() completes, you can have the reference to map and layers. Then loop through those layers and attach token to the url by: layer.url = layer.url + "?token=" + token; layer._url.query.token = token; Please let me know if this helps.
... View more
01-07-2014
11:51 AM
|
0
|
0
|
2170
|
POST
|
For your case, you should disable identity manager by setting esri.id=null;. The next step is to attach the token to the url when you create a layer. For example, var fl = new FeatureLayer(url+"?token="+token);. There are several things worth pointing out. 1. If you need to use editor and ownership-based-access-control is enable on server side, you need to add credential to the featureLayer by fl.credential = {}; fl.credential.userId = userId; fl.credential.token = token; 2. When generating the token, select HTTP referer or IP referer to make sure the token is only valid through your website. 3. when token is about to expire, you need to generate the token again and replace the token by: fl.url = url+"?token="+newToken; fl._url.query.token = newToken; In most cases, attaching the token to the url when creating the layer is sufficient enough.
... View more
01-07-2014
11:36 AM
|
0
|
0
|
2170
|
POST
|
Here is an example: http://jsfiddle.net/jian/f6g5H/ You will notice many erros in console starting from level 14, meaning resampling is happening.
... View more
01-06-2014
12:51 PM
|
0
|
0
|
672
|
POST
|
Dave, Resampling doesn't mean it can resample to any scale. The only purpose of resampling is to enlarge the image and fill in at the levels where there are no tiles available. For example, the street map tiled layer may not have data beyond level 15 in some area. But in other areas (metropolitan areas), it may have data till level 19. Enabling resampling would draw images all over to the last level and deliver consistent user experience. Of course in the area with no data, you will get blurred images. Another words, it doesn't work with user's provided LODs.
... View more
01-06-2014
11:33 AM
|
0
|
0
|
672
|
POST
|
If you have an ArcGISImageServiceLayer, identifyTask (after JS API 3.5) can find the pixel value and other related info, which might be the elevation depending on the data. But topo map is a tiled map service.
... View more
12-19-2013
06:38 PM
|
0
|
0
|
1221
|
Title | Kudos | Posted |
---|---|---|
2 | 06-21-2013 01:17 PM | |
3 | 07-15-2013 11:33 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:22 AM
|