JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="http://cesiumjs.org/Cesium/Source/Widgets/Viewer/Viewer.css">
<link rel="stylesheet" href="http://cesiumjs.org/Cesium/Source/Widgets/CesiumWidget/CesiumWidget.css">
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;signed_in=true&amp;libraries=places"></script>

JavaScript

$('body').append('<input id="s" style="width:100%"/>','<div id="e3d"/>');
var C=Cesium,C3=C.Cartesian3,CC=C.Color,v=!1,last,D=C3.fromDegrees,
m=new C.Viewer('e3d',{homeButton:v,animation:v,navigationHelpButton:v,
geocoder:v,timeline:v,baseLayerPicker:v,infoBox:v,sceneModePicker:v}),
sc=m.scene,tr=C.Math.toDegrees,es=m.entities;function p(l1,l2){
es.add({position:D(l2,l1),billboard:{image:new C.PinBuilder().
fromColor(CC.ROYALBLUE,16).toDataURL()}});m.flyTo(es);last=[l1, l2];}
if('geolocation' in navigator){navigator.geolocation.getCurrentPosition(s);
h=new C.ScreenSpaceEventHandler(sc.canvas).setInputAction(dl,3);}
function dl(mo){var el=sc.globe.ellipsoid,
c=m.camera.pickEllipsoid(mo.position,el);if(c){
var ca=el.cartesianToCartographic(c);dr([last[1],last[0],tr(ca.longitude), 
tr(ca.latitude)]);}}function dr(ls){last=[ls[3],ls[2]];es.add({polyline:{
positions:C3.fromDegreesArray(ls),material:CC.RED,outlineWidth:20}});
m.flyTo(es);}
function s(l){var c=l.coords;p(c.latitude,c.longitude);}
var inp=$('#s').get(0),sb=new google.maps.places.SearchBox(inp);
google.maps.event.addListener(sb,'places_changed',function(){
var pl=sb.getPlaces();if(pl.length){var lc=pl[0].geometry.location;
dr([last[1],last[0],lc.lng(), lc.lat()])}$('#s').val('');});