cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Super User
Super User

RAND: Keep Map Marker in a Certain Area of Screen

Hello,

I don't have much experience using the math functions within PowerApps. Looking for some guidance here. 

Scenario:

  • Using PowerApps as a rapid, click-thru prototype creation tool
  • Have a map image on the screen
  • Have a map pin on the screen
  • When user selects an item in a Gallery, I want the Map Pin to popup on the map, BUT ONLY WITHIN A CERTAIN AREA OF THE SCREEN

Questions:

  • I can control the visibility of the Map Pin based on Gallery selection.
  • But how do I easily assign some randomness to the Map Pin X and Y to give a feel of being dynamic?
  • I don't want the map pin to show up in the middle of the Pacific for example 🙂

Specifics:

  • Map image dims: X: 330, Y: 120, Width: 1000, Height: 550

Thanks for the insights!

 

2 ACCEPTED SOLUTIONS

Accepted Solutions
Dual Super User
Dual Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Or this if you want it to dynamically adjust to the image size and placement.

UpdateContext({randomX:Round((Rand()*imgMap.Width),0)+imgMap.X})
UpdateContext({random:Round((Rand()*imgMap.Height),0)+imgMap.Y})


-------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

View solution in original post

Super User
Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Sweet! Thanks for the guidance @Pstork1

Heres what I finally went with:

Set(varRandX, (Rand() * (imgMap.Width - icnMapPin.Width)) + imgMap.X);       
Set(varRandY, (Rand() * (imgMap.Height - icnMapPin.Height)) + imgMap.Y)

Key was subtracting the MapPin.Width and .Height from the map to create a "buffer" for the pin itself. 

 

View solution in original post

7 REPLIES 7
Super User
Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Hm... Thought this would work, but nope:

  • OnSelect of the Gallery, 

 

Set(varRandX, Rand() * (1330 - 336));
Set(varRandY, Rand() * (850 - 140))
  • X and Y of Map Pin Icon
    • varRandX, varRandY

 

Dual Super User
Dual Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Since this appears to be for some kind of a demo.  Have you considered making a collection of location coordinates that map to locations on your map and then using Rand() to pick the index of one of those?

UpdateContext({random:Round((Rand()*25),0)})


-------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.
Super User
Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Hi @Pstork1 , 

Thanks for the reply. This would be a good solution if I was calling an API and bringing back a map with actual coordinates. As you said, I'm demoing and just need to make the Map Pin randomly stay within the bounds of the map image. 

 

Just tried this to no avail:

Set(varRandX, Rand() * (imgMap.Width + imgMap.X));
Set(varRandY, Rand() * (imgMap.Height - imgMap.Y))
Dual Super User
Dual Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

This won't keep it from showing up in inappropriate places on the map.  But if you just want to make sure its inside the boundaries try this:

UpdateContext({randomX:Round((Rand()*1000),0)+300})
UpdateContext({random:Round((Rand()*550),0)+120})


-------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.
Dual Super User
Dual Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Or this if you want it to dynamically adjust to the image size and placement.

UpdateContext({randomX:Round((Rand()*imgMap.Width),0)+imgMap.X})
UpdateContext({random:Round((Rand()*imgMap.Height),0)+imgMap.Y})


-------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

View solution in original post

Super User
Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

Sweet! Thanks for the guidance @Pstork1

Heres what I finally went with:

Set(varRandX, (Rand() * (imgMap.Width - icnMapPin.Width)) + imgMap.X);       
Set(varRandY, (Rand() * (imgMap.Height - icnMapPin.Height)) + imgMap.Y)

Key was subtracting the MapPin.Width and .Height from the map to create a "buffer" for the pin itself. 

 

View solution in original post

Dual Super User
Dual Super User

Re: RAND: Keep Map Marker in a Certain Area of Screen

I didn't think about that.  Good catch,



-------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Helpful resources

Announcements
New Ranks and Rank Icons in April

'New Ranks and Rank Icons in April

Read the announcement for more information!

Better Together’ Contest Finalists Announced!

'Better Together’ Contest Finalists Announced!

Congrats to the finalists of our ‘Better Together’-themed T-shirt design contest! Click for the top entries.

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

thirdimage

Community Summit North America

Innovate, Collaborate, Grow - The top training and networking event across the globe for Microsoft Business Applications

Top Solution Authors
Top Kudoed Authors
Users online (5,241)