Openlayers: Update scale from resolution in cached features? The 2019 Stack Overflow Developer Survey Results Are InOpenLayers 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?

Why “相同意思的词” is called “同义词” instead of "同意词"?

Is it possible for absolutely everyone to attain enlightenment?

Deal with toxic manager when you can't quit

Did the UK government pay "millions and millions of dollars" to try to snag Julian Assange?

Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?

What to do when moving next to a bird sanctuary with a loosely-domesticated cat?

Why doesn't UInt have a toDouble()?

Cooking pasta in a water boiler

Dropping list elements from nested list after evaluation

What is the motivation for a law requiring 2 parties to consent for recording a conversation

Merge two greps into single one

Falsification in Math vs Science

How to notate time signature switching consistently every measure

Loose spokes after only a few rides

Inverse Relationship Between Precision and Recall

Getting crown tickets for Statue of Liberty

What is this sharp, curved notch on my knife for?

How to support a colleague who finds meetings extremely tiring?

How can I add encounters in the Lost Mine of Phandelver campaign without giving PCs too much XP?

How much of the clove should I use when using big garlic heads?

Can a flute soloist sit?

Why are there uneven bright areas in this photo of black hole?

Correct punctuation for showing a character's confusion

Does adding complexity mean a more secure cipher?



Openlayers: Update scale from resolution in cached features?



The 2019 Stack Overflow Developer Survey Results Are InOpenLayers 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
























  • 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
























  • 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












  • 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

រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221