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