I have the following code which will update a textbox with latitude / longitude of a location when I drag a marker on the map to its location:
var listener = function (evt) {
/* We check if this drag listener is called while the marker is being
* dragged using the default behavior component
*/
var mapDragType = evt.dataTransfer.getData("application/map-drag-type");
if (mapDragType === "marker") {
// Get the marker itself.
var marker = evt.dataTransfer.getData("application/map-drag-object");
// Get the offset of the mouse relative to the top-left corner of the marker.
var offset = evt.dataTransfer.getData("application/map-drag-object-offset");
/* Calculate the current coordinate of the marker, so substract the offset from the
* current displayX/Y position to get the top-left position of the marker and then
* add the anchor to get the pixel position of the anchor of the marker and then
* query for the coordinate of that pixel position
*/
var coordinate = map.pixelToGeo(evt.displayX - offset.x + marker.anchor.x, evt.displayY - offset.y + marker.anchor.y);
// If the marker is dragged above a zone where it may not be dropped
if (evt.dataTransfer.dropEffect === "none") {
// If this is the end of the drag
if (evt.type === "dragend") {
// then the marker will jump back to where it was;
updateInputValue(marker, marker.coordinate.toString());
}
else {
// otherwise it is currently (while being dragged) above an invalid drop zone
updateInputValue(marker, "Invalid drop zone!");
}
}
else {
// If the marker is somewhere above the map, update info text with the new coordinate.
updateInputValue(marker, coordinate.toString());
}
}
};
/* Create a helper method that updates the text fields associated with the
* marker passed as argument
*/
var updateInputValue = function (draggedMarker, text) {
if (draggedMarker === marker)
$("input[name*='txtGeoLocation']").val(text);
//markerPosUiElt.innerHTML = text;
};
The problem I'm having is that the latitude / longitude outputs in long format when I need it in decimal format.
I've tried changing the following lines:
updateInputValue(marker, marker.coordinate.toString());
To the following:
updateInputValue(marker, marker.coordinate.latitude.ToString() + ', ' + marker.coordinate.longitude.ToString());
But then my text box stops populating (I imagine an error is throwing which isn't bubbling up). I've even tried just retrieving the latitude with the following:
updateInputValue(marker, marker.coordinate.latitude.ToString());
But I still receive no output.
How can I accomplish this? I definitely don't want a long format latitude / longitude and only wish to write the decimal version on this to my textbox.