Si può usare l'API di Google Maps per nidificare i poligoni e spostarsi da loro?

1

L'API di Google Maps consente di utilizzare poligoni per creare forme su una mappa.

Quello che desidero fare è nidificare questi poligoni e usarli per descrivere i dati che possono essere utilizzati per la navigazione.

Diciamo che i dati sono densità di popolazione. Una serie di poligoni nidificati circonderebbe una città importante, ciascuno con un valore. I centri urbani più densamente popolati avrebbero un piccolo poligono con un valore 10 (per molto denso) e la periferia potrebbe essere circondata da un poligono più grande di valore 5 (densità moderata) e la campagna potrebbe trovarsi all'interno di un poligono gigante di valore 1 ( bassa densità).

Vorrei consentire a un utente di navigare con questi valori di poligono. Ad esempio, qualcuno che cerca l'area della città interna più vicina potrebbe trovarsi in un'area di valore 3 e potrebbe voler raggiungere l'area più vicina del valore 8.

Mettendo da parte per il momento come ottenere i dati sulla densità di popolazione in poligoni (Questo è un problema per un altro giorno), Esiste un modo per farlo utilizzando l'API di Google Maps e la sua funzione di poligono? C'è un modo migliore per affrontare questo problema che non sto considerando?

    
posta Brian C 14.10.2016 - 05:50
fonte

1 risposta

1

Se nidificando i poligoni si intende semplicemente inserire una forma all'interno di un'altra, considerare questo:

// This example creates a simple polygon representing the Bermuda Triangle.

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 5,
    center: {lat: 24.886, lng: -70.268},
    mapTypeId: 'terrain'
  });

  // Define the LatLng coordinates for the polygon's path.
  var triangleCoords = [
    {lat: 25.774, lng: -80.190},
    {lat: 18.466, lng: -66.118},
/* .-=== center ===-. */
    {lat: 25.321, lng: -66.118},
/* .-=== inner box ===-. */
    {lat: 25.321, lng: -69.757},
    {lat: 24.321, lng: -69.757},
    {lat: 24.321, lng: -70.757},
    {lat: 25.321, lng: -70.757},
    {lat: 25.321, lng: -69.757},
/* '-=== inner box ===-' */    
    {lat: 25.321, lng: -66.118},
/* '-=== center ===-' */
    {lat: 32.321, lng: -64.757},
    {lat: 25.774, lng: -80.190}

  // Construct the polygon.
  var bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35
  });
  bermudaTriangle.setMap(map);
}

Che produce:

Potrebbecertamenteavereunaspettomiglioremadimostrachel'annidamentodiformeègiàpossibileconunpoligono.

Daltuocommento:

ThatiswhatImean,butIdon'twantonetocreatea"hole" in the polygon, I want to have polygons contain one another and each polygon have a value (representing some data associated with that geographical area) that can be used for directions (i. e. go to the nearest point in a polygon with value 8) - Brian C

Puoi semplicemente creare un altro poligono:

  var boxCoords = [
    {lat: 25.321, lng: -69.757},
    {lat: 24.321, lng: -69.757},
    {lat: 24.321, lng: -70.757},
    {lat: 25.321, lng: -70.757},
    {lat: 25.321, lng: -69.757}
  ]

    // Construct the polygon.
  var bermudaBox = new google.maps.Polygon({
    paths: boxCoords, 
    strokeColor: '#FFF000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FFF000',
    fillOpacity: 0.35
  });

  bermudaBox.setMap(map);

Combinato con il precedente che ti dà:

    
risposta data 14.10.2016 - 09:33
fonte

Leggi altre domande sui tag