JSFiddle - React, Tailwind, and code Playground

by Bhavik Bamania

HTML

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
function pixelToLatLng converts pixel offset into lat lng in map
<br><br>
x coordinate (0-400): <input id="coorx"/><br>
y coordinate (0-400): <input id="coory"/><br>
<button id="plotit">Plot It</button>
<div id="msg"></div>
<div id="map-canvas" style="width:100vh; height:400px;"></div>

JavaScript

$(function() {
    var myLatlng = new google.maps.LatLng(38,-122);
    var mapOptions = {
        zoom: 8,
        center: myLatlng,
      };
    var map = new google.maps.Map($('#map-canvas')[0], mapOptions);
    var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
    });
    
    var pixelToLatlng = function(xcoor, ycoor) {
      var ne = map.getBounds().getNorthEast();
      var sw = map.getBounds().getSouthWest();
      var projection = map.getProjection();
      var topRight = projection.fromLatLngToPoint(ne);
      var bottomLeft = projection.fromLatLngToPoint(sw);
        
      //var scale = Math.pow(2, map.getZoom());
      var scale = 1 << map.getZoom();

      var newLatlng = projection.fromPointToLatLng(new google.maps.Point(xcoor / scale + bottomLeft.x, ycoor / scale + topRight.y));
      return newLatlng;
    };
    
    $("#plotit").click(function() {
        var newLatlng = pixelToLatlng($("#coorx").val(),$("#coory").val());
        marker.setPosition(newLatlng);
        $("#msg").html(newLatlng.lat() + ", " + newLatlng.lng());
    });
});