Wie Sie eine Google-maps-overlay-Form in die Datenbank?
Will ich speichern, ein Google-maps-overlay Form in der Datenbank. Das ist mein code. Es funktioniert perfekt, aber ich muss gerade sparen all_shapes
array in der Datenbank.
<html>
<head>
<style type="text/css">
#map, html, body
{
padding: 0;
margin: 0;
height: 100%;
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=drawing,geometry"></script>
<script>
var coordinates = [];
var all_shapes = [];
var selectedShape;
</script>
<script>
function draw_shape()
{
for(var i = 0; i < all_shapes.length; i++)
{
all_shapes[i].setMap(null);
}
for(var i = 0; i < all_shapes.length; i++)
{
all_shapes[i].setMap(map);
}
}
</script>
<script>
function clearSelection()
{
if(selectedShape)
{
selectedShape.setEditable(false);
selectedShape = null;
}
}
function setSelection(shape)
{
clearSelection();
selectedShape = shape;
shape.setEditable(true);
}
function deleteSelectedShape()
{
if (selectedShape)
{
selectedShape.setMap(null);
}
}
</script>
<script>
function save_coordinates_to_array(newShapeArg)
{
if(newShapeArg.type == google.maps.drawing.OverlayType.POLYGON)
{
var polygonBounds = newShapeArg.getPath();
for(var i = 0 ; i < polygonBounds.length ; i++)
{
coordinates.push(polygonBounds.getAt(i).lat(), polygonBounds.getAt(i).lng());
}
}
else
{
//alert("Not polygon");/////////////
}
}
</script>
<script>
var map;
function initialize()
{
map = new google.maps.Map(document.getElementById('map'), {zoom: 12, center: new google.maps.LatLng(32.344, 51.048)});
var drawingManager = new google.maps.drawing.DrawingManager();
drawingManager.setMap(map);
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
var newShape = e.overlay;
newShape.type = e.type;
all_shapes.push(newShape);
setSelection(newShape);
save_coordinates_to_array(newShape);
google.maps.event.addListener(newShape, 'click', function() {setSelection(newShape)});
});
google.maps.event.addListener(map, 'click', function(e) {clearSelection();});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<table border="1">
<tr>
<td>Name</td>
<td><input name="name" id="name" type="text"></td>
</tr>
<tr>
<td>Color</td>
<td>
<table border="1" width="100%">
<tr>
<td bgcolor="#FF0000"> </td>
<td bgcolor="#00FF00"> </td>
<td bgcolor="#0000FF"> </td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><input name="save" type="button" value="Save" onClick="draw_shape()"></td>
</tr>
<tr>
<td colspan="2"><input name="delete" type="button" value="Delete" onClick="deleteSelectedShape()"></td>
</tr>
</table>
<div id="map"></div>
</body>
</html>
Wo und wie kann ich die erstellten overlay-Formen in der Datenbank. Alle Formen gespeichert sind, in die var all_shapes = [];
array. Welche Art von Typ ich wählen für das Feld in der Datenbank? Ich meine z.B. int, char, etc.
Ich werde die Verwendung von MySQL und PHP.
InformationsquelleAutor der Frage Sponge Bob | 2013-10-27
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie einfach nur speichern wollen, die Formen, irgendwie, Sie können einen JSON-string zu speichern, z.B. im
Text
-Spalte(char
wäre zu klein, um Sie zu speichern detaillierte Polygonen/Polylinien )Hinweis: beim erstellen der JSON-string, müssen Sie konvertieren Sie die Eigenschaften(z.B. zu native arrays oder Objekte), können Sie nicht speichern, zum Beispiel LatLng ' s direkt, denn der Prototyp geht verloren, wenn es zu speichern. Wege der Polylinien/Polygone gespeichert werden können codiert
Einem anderen Ansatz:
verwenden Sie mehrere Spalten, z.B.
varchar
), wo Sie speichern den Typ(LatLng, Kreis,Polylinie,etc.)geometry
) speichern Sie die geometrischen Merkmale(LatLng,Polygon oder Polylinie)int
), wo Sie speichern eine radius(wird verwendet, wenn Sie einfügen eines Kreis)text
) speichern Sie die style-Optionen(wenn benötigt)Ist der erste Vorschlag wäre ausreichend, wenn Sie wollen einfach nur, um es zu speichern.
Wenn Sie müssen in der Lage sein, auf bestimmte Formen, e.g für einen bestimmten Bereich, der 2. Vorschlag.
Sehen http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html details zu den räumlichen Erweiterungen
2 Funktionen, entweder entfernen Sie die kreisförmige Referenzen und erstellen Sie speicherbare Objekte, oder stellen Sie die überlagerungen aus diesen gespeicherten Objekte.
Array zurückgegeben
IO.IN
kann sein sended zu einem serverseitigen Skript. Der serverseitige Skript iteriert über das array und FÜGEN Sie ein JSON-string in die Tabelle ein:zur Wiederherstellung der Formen Holen Sie:
und übergeben Sie das Ergebnis an
IO.OUT()
:Demo: http://jsfiddle.net/doktormolle/EdZk4/show/
InformationsquelleAutor der Antwort Dr.Molle
Einfache GeoJson Editor ist ein Beispiel für das zeichnen, Bearbeiten, löschen und speichern von Formen als geoJson auf google maps. Der Autor ( ein Google-intern) bezeichnete das Projekt in diesem post.
Den Javascript und HTML nicht minified.
Einen noch besseren opensource-tool finden Sie unter Geojson.io
InformationsquelleAutor der Antwort intotecho
Wenn Sie brauchen, um zu speichern, den Pfad, nur um Sie später wiederherstellen auf einer Karte können Sie auch verwenden,Google Maps Encoding Utility. Es ist nicht so mächtig, wie Dr. Molle Antwort, aber kann nützlich sein für die Speicherung von Polygonen und Polylinien.
InformationsquelleAutor der Antwort trainmaster