JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry,places&ext=.js"></script>
<div id="map_canvas"></div>
CSS
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
JavaScript
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
for (var angle = 0; angle < 360; angle += 10) {
var p1 = google.maps.geometry.spherical.computeOffset(map.getCenter(), 1000, angle);
var p2 = google.maps.geometry.spherical.computeOffset(map.getCenter(), 2000, angle);
drawDashedCurve(p1, p2, map);
var straightPoly = new google.maps.Polyline({
map:map,
path: [p1, p2],
strokeOpacity: 0.2,
strokeColor: "blue"
});
var markerP1 = new google.maps.Marker({
position: p1,
map:map,
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 4,
fillColor: "black",
fillOpacity: 1.0
}
});
var markerP2 = new google.maps.Marker({
position: p2,
map:map,
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 4,
fillColor: "black",
fillOpacity: 1.0
}
});
}
}
google.maps.event.addDomListener(window, "load", initialize);
function drawDashedCurve(P1, P2, map) {
var lineLength = google.maps.geometry.spherical.computeDistanceBetween(P1, P2);
var lineHeading = google.maps.geometry.spherical.computeHeading(P1, P2);
if (lineHeading < 0) {
var lineHeading1 = lineHeading + 45;
var lineHeading2 = lineHeading + 135;
} else {
var lineHeading1 = lineHeading + -45;
var lineHeading2 = lineHeading + -135;
}
var pA = google.maps.geometry.spherical.computeOffset(P1, lineLength / 2.2, lineHeading1);
var pB = google.maps.geometry.spherical.computeOffset(P2, lineLength / 2.2, lineHeading2);
var curvedLine = new GmapsCubicBezier(P1, pA, pB, P2, 0.01, map);
}
var GmapsCubicBezier = function(latlong1, latlong2, latlong3, latlong4, resolution, map) {
var lat1 = latlong1.lat();
var long1 = latlong1.lng();
var lat2 = latlong2.lat();
var long2 = latlong2.lng();
var lat3 =...