Die Google Maps-API stellt keine County-Polygone oder andere vordefinierte Grenzen von Staaten oder Ländern zur Verfügung. Daher besteht das Hauptproblem hier darin, die Polygondaten zu erhalten.
Ein Polygon auf der Google Maps API durch den Bau einer Reihe von LatLng
Objekte definiert ist (vorausgesetzt, Sie die v3-API verwenden):
var bermudaTriangleCoords = [
new google.maps.LatLng(25.774252, -80.190262),
new google.maps.LatLng(18.466465, -66.118292),
new google.maps.LatLng(32.321384, -64.757370),
new google.maps.LatLng(25.774252, -80.190262)
];
Dann würden Sie dieses Array verwenden, um ein Polygon
Objekt zu konstruieren:
var bermudaTriangle = new google.maps.Polygon({
paths: bermudaTriangleCoords,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
Und schließlich zeigen sie auf der Karte durch die setMap()
Methode aufrufen:
bermudaTriangle.setMap(map); // Assuming map is your google.maps.Map object
Wenn Sie einen Verweis auf Ihr Polygon
Objekt halten, können Sie es auch, indem null
zur setMap()
Methode verbergen:
bermudaTriangle.setMap(null);
Daher könnten Sie für jeden Kreis ein JavaScript-Objekt mit einem Eigenschaftsnamen betrachten zu bauen. Dadurch können Sie die Polygonobjekte aus dem Namen der Landkreise in O(1) (konstante Zeit) abrufen, ohne die gesamte Sammlung durchlaufen zu müssen. Betrachten Sie das folgende Beispiel:
// Let's start with an empty object:
var counties = {
};
// Now let's add a county polygon:
counties['Alameda'] = new google.maps.Polygon({
paths: [
// This is not real data:
new google.maps.LatLng(25.774252, -80.190262),
new google.maps.LatLng(18.466465, -66.118292),
new google.maps.LatLng(32.321384, -64.757370),
new google.maps.LatLng(25.774252, -80.190262)
// ...
],
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000",
fillOpacity: 0.3'
});
// Next county:
counties['Alpine'] = new google.maps.Polygon({
// Same stuff
});
// And so on...
Das counties
Objekt unserer Datenspeicher sein. Wenn ein Nutzer nach „El Dorado“ Sie einfach das Polygon zeigen können, wie folgt:
counties['El Dorado'].setMap(map);
Wenn Sie einen Verweis auf den zuvor gesuchten Kreis halten, können Sie auch setMap(null)
rufen Sie den vorherigen Polygon zu verbergen:
var userInput = 'El Dorado';
var latestSearch = null;
// Check if the county exists in our data store:
if (counties.hasOwnProperty(userInput)) {
// It does - So hide the previous polygon if there was one:
if (latestSearch) {
latestSearch.setMap(null);
}
// Show the polygon for the searched county:
latestSearch = counties[userInput].setMap(map);
}
else {
alert('Error: The ' + userInput + ' county was not found');
}
Ich hoffe, das bringt dich in die richtige Richtung.