<?php
echo $this->Html->css('maptest.css');
echo $this->Html->script('https://maps.googleapis.com/maps/api/js?key=##############################&callback=initMap');
echo $this->Html->script('maptest.js');

echo '<div id="map"></div>';
?>

webroot/css/maptest.css

#map {
    height: 300px;
    width: 300px;
}

webroot/css/maptest.js

var map;
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });
}

選択された場所を選ぶ

<?php
echo $this->Html->css('maptest.css');
echo $this->Html->script('https://maps.googleapis.com/maps/api/js?key=#####################&callback=initMap');
echo $this->Html->script('maptest.js');

echo '<div id="map"></div>';


// Formオプションを指定する
$formOptions = [
    'type'      =>'post',
    'action'    =>'register',
];

// Formの名前を指定する
$formName = "MyFormName";

// Formを作成する
echo $this->Form->create($formName, $formOptions);

echo $this->Form->input('lat', [
    'label'            => '緯度',
    'placeholder'   => '緯度が入力されます', 
    'id'            => 'lat', 
]);

echo $this->Form->input('lon', [
    'label'            => '経度',
    'placeholder'   => '経度が入力されます', 
    'id'            => 'lon', 
]);

echo $this->Form->end();

?>
function initMap(){

    // Map
    var map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: 37.490085,  lng: 139.930946},
        zoom: 15
    });

    // Marker
    var selectedMarker = new google.maps.Marker({
        map: map,
        position: new google.maps.LatLng( 37.490085, 139.930946 )
    });

    // Event
    google.maps.event.addListener(map, 'click', function(event)
    {
        selectedMarker.position = event.latLng;
        selectedMarker.setMap(map);

        document.getElementById('lat').value = event.latLng.lat(); 
        document.getElementById('lon').value = event.latLng.lng(); 
    })

}