Openlayers: Update scale from resolution in cached features?OpenLayers 3 function resolution?OpenLayers 3:...
Arrow those variables!
Important Resources for Dark Age Civilizations?
What's the output of a record needle playing an out-of-speed record
Does detail obscure or enhance action?
Revoked SSL certificate
Rock identification in KY
Perform and show arithmetic with LuaLaTeX
What would happen to a modern skyscraper if it rains micro blackholes?
What is the word for reserving something for yourself before others do?
How can I prevent hyper evolved versions of regular creatures from wiping out their cousins?
Which country benefited the most from UN Security Council vetoes?
What's the point of deactivating Num Lock on login screens?
Do infinite dimensional systems make sense?
Do I have a twin with permutated remainders?
Can a Cauchy sequence converge for one metric while not converging for another?
How much of data wrangling is a data scientist's job?
How to determine what difficulty is right for the game?
Did Shadowfax go to Valinor?
Does an object always see its latest internal state irrespective of thread?
How does quantile regression compare to logistic regression with the variable split at the quantile?
Can you really stack all of this on an Opportunity Attack?
Client team has low performances and low technical skills: we always fix their work and now they stop collaborate with us. How to solve?
How is the claim "I am in New York only if I am in America" the same as "If I am in New York, then I am in America?
How is it possible to have an ability score that is less than 3?
Openlayers: Update scale from resolution in cached features?
OpenLayers 3 function resolution?OpenLayers 3: Refreshing OSM layer upon resolution changeRemove All Features from Vector Layer in OpenLayers 3OpenLayers 3 scale past nativeZoom like Leaflet?Hide/filter features from Openlayers 3Zoom Scale in OpenLayers 3GeoJSON external file reloading - caching issuesOpenLayers 3 geolocation updateOpenLayers 4 styling draw featuresOpenlayers with Cached Bing Maps?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
I have a large number of cached vector features which I am caching for speed. However, as they need to change size depending on view resolution, I have to do various updates on them with each increment, which sort of defeats the purpose of caching.
Is there a way for cached styles to update their scale (and other options, like offSet) when resolution changes?
Here's the basic code:
const imageVectorStyle = function(image, resolution) {
// Caching both the style and the icon, fyi.
let style = styleCache[image.getProperties().name];
if (style) {
//The style exists in the cache, but since the resolution has changed
//since caching, I have to update the scale.
style.getImage().setScale(1 / resolution);
return style
}
else {
const imageProperties = image.getProperties();
let imageIcon = iconcache[imageProperties.src];
if (!imageIcon) {
imageIcon = new Icon({
offset: imageProperties.offset,
size: imageProperties.size,
stroke: new Stroke({color: '#dee2e6', width: 1 }),
// Here scale is set based on resolution when the style is first created.
scale: 1 / resolution,
crossOrigin: 'anonymous',
src: imageProperties.src
});
}
}
}
openlayers
bumped to the homepage by Community♦ 21 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
I have a large number of cached vector features which I am caching for speed. However, as they need to change size depending on view resolution, I have to do various updates on them with each increment, which sort of defeats the purpose of caching.
Is there a way for cached styles to update their scale (and other options, like offSet) when resolution changes?
Here's the basic code:
const imageVectorStyle = function(image, resolution) {
// Caching both the style and the icon, fyi.
let style = styleCache[image.getProperties().name];
if (style) {
//The style exists in the cache, but since the resolution has changed
//since caching, I have to update the scale.
style.getImage().setScale(1 / resolution);
return style
}
else {
const imageProperties = image.getProperties();
let imageIcon = iconcache[imageProperties.src];
if (!imageIcon) {
imageIcon = new Icon({
offset: imageProperties.offset,
size: imageProperties.size,
stroke: new Stroke({color: '#dee2e6', width: 1 }),
// Here scale is set based on resolution when the style is first created.
scale: 1 / resolution,
crossOrigin: 'anonymous',
src: imageProperties.src
});
}
}
}
openlayers
bumped to the homepage by Community♦ 21 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
I don't get how why would you have to change size of vector feature based on resolution, that is what OL does automatically for you, is it not? You need to generalize the vectors or what? How do you cache the vectors? For some dynamic styling you can use style function
– Catch
May 15 '18 at 9:39
Once they are cached, they keep the map resolution at the moment they were cached. So for example, if I set icon scale = 1/resolution, that resolution value does not update when the map resolution changes.
– Ben Upham
May 16 '18 at 14:32
Do you change geometry after zoom or are you changing just style?
– Catch
May 17 '18 at 9:21
I change style, specifically the image scale -- style.getImage().setScale(1/resolution).
– Ben Upham
May 17 '18 at 21:59
add a comment |
I have a large number of cached vector features which I am caching for speed. However, as they need to change size depending on view resolution, I have to do various updates on them with each increment, which sort of defeats the purpose of caching.
Is there a way for cached styles to update their scale (and other options, like offSet) when resolution changes?
Here's the basic code:
const imageVectorStyle = function(image, resolution) {
// Caching both the style and the icon, fyi.
let style = styleCache[image.getProperties().name];
if (style) {
//The style exists in the cache, but since the resolution has changed
//since caching, I have to update the scale.
style.getImage().setScale(1 / resolution);
return style
}
else {
const imageProperties = image.getProperties();
let imageIcon = iconcache[imageProperties.src];
if (!imageIcon) {
imageIcon = new Icon({
offset: imageProperties.offset,
size: imageProperties.size,
stroke: new Stroke({color: '#dee2e6', width: 1 }),
// Here scale is set based on resolution when the style is first created.
scale: 1 / resolution,
crossOrigin: 'anonymous',
src: imageProperties.src
});
}
}
}
openlayers
I have a large number of cached vector features which I am caching for speed. However, as they need to change size depending on view resolution, I have to do various updates on them with each increment, which sort of defeats the purpose of caching.
Is there a way for cached styles to update their scale (and other options, like offSet) when resolution changes?
Here's the basic code:
const imageVectorStyle = function(image, resolution) {
// Caching both the style and the icon, fyi.
let style = styleCache[image.getProperties().name];
if (style) {
//The style exists in the cache, but since the resolution has changed
//since caching, I have to update the scale.
style.getImage().setScale(1 / resolution);
return style
}
else {
const imageProperties = image.getProperties();
let imageIcon = iconcache[imageProperties.src];
if (!imageIcon) {
imageIcon = new Icon({
offset: imageProperties.offset,
size: imageProperties.size,
stroke: new Stroke({color: '#dee2e6', width: 1 }),
// Here scale is set based on resolution when the style is first created.
scale: 1 / resolution,
crossOrigin: 'anonymous',
src: imageProperties.src
});
}
}
}
openlayers
openlayers
edited May 23 '18 at 17:52
Ben Upham
asked May 11 '18 at 20:26
Ben UphamBen Upham
32
32
bumped to the homepage by Community♦ 21 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 21 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
I don't get how why would you have to change size of vector feature based on resolution, that is what OL does automatically for you, is it not? You need to generalize the vectors or what? How do you cache the vectors? For some dynamic styling you can use style function
– Catch
May 15 '18 at 9:39
Once they are cached, they keep the map resolution at the moment they were cached. So for example, if I set icon scale = 1/resolution, that resolution value does not update when the map resolution changes.
– Ben Upham
May 16 '18 at 14:32
Do you change geometry after zoom or are you changing just style?
– Catch
May 17 '18 at 9:21
I change style, specifically the image scale -- style.getImage().setScale(1/resolution).
– Ben Upham
May 17 '18 at 21:59
add a comment |
I don't get how why would you have to change size of vector feature based on resolution, that is what OL does automatically for you, is it not? You need to generalize the vectors or what? How do you cache the vectors? For some dynamic styling you can use style function
– Catch
May 15 '18 at 9:39
Once they are cached, they keep the map resolution at the moment they were cached. So for example, if I set icon scale = 1/resolution, that resolution value does not update when the map resolution changes.
– Ben Upham
May 16 '18 at 14:32
Do you change geometry after zoom or are you changing just style?
– Catch
May 17 '18 at 9:21
I change style, specifically the image scale -- style.getImage().setScale(1/resolution).
– Ben Upham
May 17 '18 at 21:59
I don't get how why would you have to change size of vector feature based on resolution, that is what OL does automatically for you, is it not? You need to generalize the vectors or what? How do you cache the vectors? For some dynamic styling you can use style function
– Catch
May 15 '18 at 9:39
I don't get how why would you have to change size of vector feature based on resolution, that is what OL does automatically for you, is it not? You need to generalize the vectors or what? How do you cache the vectors? For some dynamic styling you can use style function
– Catch
May 15 '18 at 9:39
Once they are cached, they keep the map resolution at the moment they were cached. So for example, if I set icon scale = 1/resolution, that resolution value does not update when the map resolution changes.
– Ben Upham
May 16 '18 at 14:32
Once they are cached, they keep the map resolution at the moment they were cached. So for example, if I set icon scale = 1/resolution, that resolution value does not update when the map resolution changes.
– Ben Upham
May 16 '18 at 14:32
Do you change geometry after zoom or are you changing just style?
– Catch
May 17 '18 at 9:21
Do you change geometry after zoom or are you changing just style?
– Catch
May 17 '18 at 9:21
I change style, specifically the image scale -- style.getImage().setScale(1/resolution).
– Ben Upham
May 17 '18 at 21:59
I change style, specifically the image scale -- style.getImage().setScale(1/resolution).
– Ben Upham
May 17 '18 at 21:59
add a comment |
1 Answer
1
active
oldest
votes
If you want to style features based on resolution, you can use style function. It is used in this example. It is a function which takes feature and resolution as parameters and has to return instance of ol.Style, or array of styles.
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "79"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f282633%2fopenlayers-update-scale-from-resolution-in-cached-features%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you want to style features based on resolution, you can use style function. It is used in this example. It is a function which takes feature and resolution as parameters and has to return instance of ol.Style, or array of styles.
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
add a comment |
If you want to style features based on resolution, you can use style function. It is used in this example. It is a function which takes feature and resolution as parameters and has to return instance of ol.Style, or array of styles.
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
add a comment |
If you want to style features based on resolution, you can use style function. It is used in this example. It is a function which takes feature and resolution as parameters and has to return instance of ol.Style, or array of styles.
If you want to style features based on resolution, you can use style function. It is used in this example. It is a function which takes feature and resolution as parameters and has to return instance of ol.Style, or array of styles.
answered May 18 '18 at 6:40
CatchCatch
1836
1836
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
add a comment |
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
I'm using style functions. The style function looks up the feature's icon in the cache first thing, to see if it can use the cached icon. However, because the resolution has changed since it was cached, I have to update the scale of the icon when I pull it from the cache.
– Ben Upham
May 19 '18 at 22:41
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Can you please provide the styleFunction code? Very usefull would be also images of what you want to achieve...
– Catch
May 21 '18 at 5:35
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Added code to question.
– Ben Upham
May 23 '18 at 17:53
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
Ok, I don't know if this is just the basics or the real code (because you don't have any return statement in the else section) but I assume it's just a scheme and you have it syntactically and logically correct. Have you tried not to cache the styles? Just make a function that creates and returns new ol.Style? Would it work? I don't think that it will be too much slower...
– Catch
May 24 '18 at 11:54
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
It's edited down. I will try, but I believe I needed to cache both the style and the icon to achieve good performance without flickering. I've got several thousand features...
– Ben Upham
May 24 '18 at 19:34
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f282633%2fopenlayers-update-scale-from-resolution-in-cached-features%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I don't get how why would you have to change size of vector feature based on resolution, that is what OL does automatically for you, is it not? You need to generalize the vectors or what? How do you cache the vectors? For some dynamic styling you can use style function
– Catch
May 15 '18 at 9:39
Once they are cached, they keep the map resolution at the moment they were cached. So for example, if I set icon scale = 1/resolution, that resolution value does not update when the map resolution changes.
– Ben Upham
May 16 '18 at 14:32
Do you change geometry after zoom or are you changing just style?
– Catch
May 17 '18 at 9:21
I change style, specifically the image scale -- style.getImage().setScale(1/resolution).
– Ben Upham
May 17 '18 at 21:59