{"id":2734,"date":"2025-12-24T10:00:19","date_gmt":"2025-12-24T15:00:19","guid":{"rendered":"https:\/\/www.mymiller.name\/wordpress\/?p=2734"},"modified":"2025-12-24T10:00:19","modified_gmt":"2025-12-24T15:00:19","slug":"geo-fence","status":"publish","type":"post","link":"https:\/\/www.mymiller.name\/wordpress\/geo\/geo-fence\/","title":{"rendered":"Geo &#8211; Fence"},"content":{"rendered":"\n<p>Every need to define an area and determine if a location is within that range?  This is called a GeoFence. Very handy and useful for any kind of GPS tracking.  Define the GeoFence area, then you can use checkInside() to see if a GeoLocation is inside or outside of the enclosed area.<\/p>\n\n\n\n<div class=\"wp-block-coblocks-gist\"><script src=\"https:\/\/gist.github.com\/Ghost-Programmer\/5d0e16c114fd70ef51dbc7857092a2a9.js\"><\/script><noscript><a href=\"https:\/\/gist.github.com\/Ghost-Programmer\/5d0e16c114fd70ef51dbc7857092a2a9\">View this gist on GitHub<\/a><\/noscript><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Every need to define an area and determine if a location is within that range? This is called a GeoFence. Very handy and useful for any kind of GPS tracking. Define the GeoFence area, then you can use checkInside() to see if a GeoLocation is inside or outside of the enclosed area.<\/p>\n","protected":false},"author":1,"featured_media":2721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[454],"tags":[291],"series":[288],"class_list":["post-2734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geo","tag-geo","series-geo"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/map-2789052_640.jpg?fit=640%2C426&ssl=1","jetpack-related-posts":[{"id":2732,"url":"https:\/\/www.mymiller.name\/wordpress\/geo\/geo-path\/","url_meta":{"origin":2734,"position":0},"title":"Geo &#8211; Path","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"Once you have GeoLocations, you can then make shapes for them. So we create a GeoShape Interface that allows us to define our shape. View this gist on GitHub We implement a forEach() method to be able to act on each location in the shape, and a getGeoPath() to return\u2026","rel":"","context":"In &quot;Geo&quot;","block_context":{"text":"Geo","link":"https:\/\/www.mymiller.name\/wordpress\/category\/geo\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/treasure-map-1850653_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/treasure-map-1850653_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/treasure-map-1850653_640.jpg?fit=640%2C426&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2730,"url":"https:\/\/www.mymiller.name\/wordpress\/geo\/geo-line\/","url_meta":{"origin":2734,"position":1},"title":"Geo &#8211; Line","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"One of the simplest shapes we can make is GeoLine. It consists of two GeoLocations the start, and end of the line. The line is the simplest of shapes but is used by other shapes to make their structure. View this gist on GitHub","rel":"","context":"In &quot;Geo&quot;","block_context":{"text":"Geo","link":"https:\/\/www.mymiller.name\/wordpress\/category\/geo\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/chart-1110428_640.jpg?fit=640%2C257&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/chart-1110428_640.jpg?fit=640%2C257&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/chart-1110428_640.jpg?fit=640%2C257&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2726,"url":"https:\/\/www.mymiller.name\/wordpress\/geo\/geo-latitude-longitude\/","url_meta":{"origin":2734,"position":2},"title":"Geo &#8211; Latitude &#038; Longitude","author":"Jeffery Miller","date":"December 23, 2025","format":false,"excerpt":"Latitude and Longitude implementation for Geo API.","rel":"","context":"In &quot;Geo&quot;","block_context":{"text":"Geo","link":"https:\/\/www.mymiller.name\/wordpress\/category\/geo\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/globe-71443_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/globe-71443_640.jpg?fit=640%2C426&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/globe-71443_640.jpg?fit=640%2C426&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2728,"url":"https:\/\/www.mymiller.name\/wordpress\/geo\/geo-location\/","url_meta":{"origin":2734,"position":3},"title":"Geo &#8211; Location","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"So we have Latitude and Longitude, putting those together we have a location now. That is simple enough, but once we have a location, we can use that to derive other locations. Deriving new locations We create the addDistanceEast(), addDistanceWest(), addDistanceNorth(), and addDistanceSouth() methods to generate a new location-based on\u2026","rel":"","context":"In &quot;Geo&quot;","block_context":{"text":"Geo","link":"https:\/\/www.mymiller.name\/wordpress\/category\/geo\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/street-map-2679271_640.jpg?fit=640%2C332&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/street-map-2679271_640.jpg?fit=640%2C332&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2020\/04\/street-map-2679271_640.jpg?fit=640%2C332&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3922,"url":"https:\/\/www.mymiller.name\/wordpress\/spng_security\/beyond-rbac-spring-security-6-oauth-2-1-and-the-zero-trust-evolution\/","url_meta":{"origin":2734,"position":4},"title":"Beyond RBAC: Spring Security 6, OAuth 2.1, and the Zero-Trust Evolution","author":"Jeffery Miller","date":"April 20, 2026","format":false,"excerpt":"The journey to Zero Trust (ZT) is an ongoing architectural evolution, not a single deployment. While the foundational principles\u2014never trust, always verify\u2014are clear, implementing them in a distributed microservice environment requires rigorous adherence to modern standards. For Spring architects and developers, Spring Security 6 and the Spring Authorization Server provide\u2026","rel":"","context":"In &quot;Spring Security&quot;","block_context":{"text":"Spring Security","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spng_security\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/coding-1841550_1280.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/coding-1841550_1280.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/coding-1841550_1280.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/coding-1841550_1280.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/coding-1841550_1280.avif 3x"},"classes":[]},{"id":3374,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_databases\/spring-data-with-java-records\/","url_meta":{"origin":2734,"position":5},"title":"Spring Data with Java Records","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"Java records are a new feature introduced in Java 14 that provides a concise way to declare classes that are meant to hold immutable data. Spring Data is a popular framework for building data access layers in Java applications. In this answer, we will explain how to use Java records\u2026","rel":"","context":"In &quot;Spring Databases&quot;","block_context":{"text":"Spring Databases","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_databases\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/06\/office-work-gc63fa3774_640.jpg?fit=640%2C430&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/06\/office-work-gc63fa3774_640.jpg?fit=640%2C430&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/06\/office-work-gc63fa3774_640.jpg?fit=640%2C430&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/2734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/comments?post=2734"}],"version-history":[{"count":4,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/2734\/revisions"}],"predecessor-version":[{"id":2760,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/2734\/revisions\/2760"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media\/2721"}],"wp:attachment":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media?parent=2734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/categories?post=2734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/tags?post=2734"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/series?post=2734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}