Мне нужно поместить сетку на карту, где квадрат сетки составляет 1/4 минуты x 1/4 минуты. IOW - трапеция. Я использую JavaScript с использованием Delphi и TWebBrowser.Как создать сетку - это область просмотра карты
Прямо сейчас я отвечаю на событие click, чтобы проверить нарисовать один gridBox, но мне нужно будет нарисовать событие Bounds changed и заполнить карту сеткой.
, так как сетка размером 1/4 мин довольно мала, нецелесообразно иметь одну предварительно сохраненную в KML или слиянии, поэтому я решил ее динамически нарисовать на карте.
Мои сетки всегда будут падать на границу qtrMinute. я пытаюсь определить, как создать эти поля для заполнения карты.
Мне нужно будет начать в левом верхнем углу и нарисовать их до нижнего левого края, перерисовать их, когда границы будут изменены.
Я ограничу масштаб пользователя, чтобы не налагать чрезмерного времени на рисование.
помогло бы мне с логикой заполнить экран сетчатыми коробками.
благодаря Springer
<html>
<head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry&sensor=false"></script>
<title>Find your Qtr minute locator</title>
</head>
<body style="height:100%;margin:0">
<!-- Declare the div, make it take up the full document body -->
<div id="map-canvas" style="width: 100%; height: 95%;"></div>
<script type="text/javascript">
var map;
var qtrArray = [];
var linesArray = [];
var Startlatlng;
var drawGridBox = false;
var gridline;
function initialize() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(33.00, -100.00),
zoom: 10,
streetViewControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true
});
var llOffset = 0.0666666666666667;
var oLat = 34.00;
var oLon = -100.00;
var gridlocator = [ new google.maps.LatLng(oLat, oLon)];
google.maps.event.addListener(map, 'click', function (event) {
/* google.maps.event.addListener(map, 'bounds_changed', DrawLine); */
// Square limits
var bottomLeftLat = Math.floor(event.latLng.lat()/llOffset) * llOffset;
var bottomLeftLong = Math.floor(event.latLng.lng()/llOffset) * llOffset;
var bounds = new google.maps.LatLngBounds();
var i;
var gridLineSquare = [
new google.maps.LatLng(bottomLeftLat, bottomLeftLong), //lwr left
new google.maps.LatLng(bottomLeftLat, bottomLeftLong + llOffset), //lwr right
new google.maps.LatLng(bottomLeftLat + llOffset, bottomLeftLong + llOffset), //upr right
new google.maps.LatLng(bottomLeftLat + llOffset, bottomLeftLong),
new google.maps.LatLng(bottomLeftLat, bottomLeftLong)];
for (i = 0; i < gridLineSquare.length; i++) {
bounds.extend(gridLineSquare[i]);
}
external.getData(event.latLng);
if (drawGridBox == true) {
polyline = new google.maps.Polyline({
path: polylinesquare,
geodesic: true,
strokeColor: '#0000FF',
strokeOpacity: 0.5,
strokeWeight: 1
});
polyline.setMap(map);
qtrArray.push(polyline);}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
function DrawGridOn() {drawGridBox = true}
function DrawGridOff() {drawGridBox = false}
function ClearLastGrid(){polyline.setMap(null); }
</script>
</body>
</html>
Я получаю ошибку яваскрипта с кодом, как разместил 'неперехваченного ReferenceError: mArray не defined' – geocodezip
я удалил эту часть сценария. Я попытался удалить весь скрипт, который не касался этого вопроса, но некоторые остались. –
Есть и другие проблемы. Пожалуйста, напишите [Минимальный, полный, проверенный и читаемый пример] (http://stackoverflow.com/help/mcve), который демонстрирует текущее состояние вашего кода. – geocodezip