diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index efc0c9a8fa..62f82ea274 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -64,6 +64,7 @@
#include "lltoolbarview.h"
#include "lltracker.h"
#include "lltrans.h"
+#include "llurlregistry.h" // Access to isUrl
#include "llviewerinventory.h" // LLViewerInventoryItem
#include "llviewermenu.h"
#include "llviewerparcelmgr.h"
@@ -2041,6 +2042,19 @@ void LLFloaterWorldMap::onCommitSearchResult(bool from_search)
constexpr F64 SIM_COORD_DEFAULT = 128.0;
LLVector3 pos_local(SIM_COORD_DEFAULT, SIM_COORD_DEFAULT, 0.0f);
+ // [FIRE-36896] Set the teleport coordinates if provided in OpenSim
+ #ifdef OPENSIM
+ if (LLGridManager::getInstance()->isInOpenSim() && LLUrlRegistry::instance().isUrl(sim_name))
+ {
+ LLSLURL slurl = LLSLURL(sim_name);
+ if (slurl.getType() == LLSLURL::LOCATION)
+ {
+ LLVector3 slurl_position = slurl.getPosition();
+ pos_local.set(slurl_position);
+ }
+ }
+ #endif
+ //
// Did this value come from a trackURL() request?
if (!mCompletingRegionPos.isExactlyZero())