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;
}







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
});
}
}
}









share|improve this question
















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


















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
});
}
}
}









share|improve this question
















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














0












0








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
});
}
}
}









share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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



















  • 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










1 Answer
1






active

oldest

votes


















0














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.






share|improve this answer
























  • 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












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
});


}
});














draft saved

draft discarded


















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









0














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.






share|improve this answer
























  • 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
















0














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.






share|improve this answer
























  • 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














0












0








0







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.






share|improve this answer













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.







share|improve this answer












share|improve this answer



share|improve this answer










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



















  • 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


















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Щит и меч (фильм) Содержание Названия серий | Сюжет |...

is 'sed' thread safeWhat should someone know about using Python scripts in the shell?Nexenta bash script uses...

Meter-Bus Содержание Параметры шины | Стандартизация |...