Я пытаюсь сохранить координаты из многоугольника на Картах Google, нарисованных с помощью Диспетчера чертежей. Но у меня возникла проблема с циклом широты и долготы. Я знаю, что вставка запускается, потому что она вставляет последний первичный ключ из родительской таблицы, но координаты (широта и долгота) не вставляются одновременно. Поля просто остаются нулевыми. Вот моя попытка, и я надеюсь, что объяснил это очень хорошо.
Посмотреть (addgeofence.php)
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
all_overlays.push(event);
if (event.type != google.maps.drawing.OverlayType.MARKER) {
drawingManager.setOptions({
drawingMode: null,
drawingControl: false
});
polygonArray = event.overlay.getPath().getArray();
}
});
function submit()
{
if(!Array.isArray(polygonArray) || !polygonArray.length){
$.smallBox({
title : "Input Alert",
content : "<i class='fa fa-clock-o'></i> <i>There is no Polygon!</i>",
color : "#C46A69",
iconSmall : "fa fa-times fa-2x fadeInRight animated",
timeout : 8000
});
}
else
{
var stringified = JSON.stringify(polygonArray);
formData.append('stringified', stringified);
$.ajax({
contentType: 'multipart/form-data',
url: base_url+'geofence/save_geofence',
type: "POST",
data: formData,
processData:false,
contentType:false,
..........
}
Контроллер (Geofence.php)
public function save_geofence()
{
$qry = $this->geofence_m->save_new_geofence();
echo json_encode($qry);
}
Модель (Geofence_m.php)
public function save_new_geofence()
{
..............
$gid = $this->db->insert_id();
if($insQry)
{
$array = json_decode($_POST['stringified'], true);
foreach ($array as $v1) {
foreach ($v1 as list($a, $b)) {
$insData = array('geofence_ID' => $gid,
'geofence_latitude' => $a,
'geofence_longitude' => $b);
$this->db->insert('x_geofence_coordinates', $insData);
}
}
}
}
Я попытался вставить весь массив $ без зацикливания, и это вставленные данные:
[
{"lat":22.59725475332327,"lng":113.92748227208108},
{"lat":22.57316327618248,"lng":114.17330136387795},
{"lat":22.436142339776456,"lng":114.20626034825295},
{"lat":22.408214041987026,"lng":113.85332455723733}
]
UPDATE:
Прошу прощения за мою ошибку. Это данные массива $, которые вставляются, когда я пытался вставить массив $ без зацикливания. Приведенная выше строка неверна, пожалуйста, игнорируйте. Спасибо.
[
[
{"lat":22.5642864069,"lng":113.886283542},
{"lat":22.5490675872,"lng":114.206260348},
{"lat":22.4069444405,"lng":114.199393893},
{"lat":22.4171009278,"lng":113.88353696}
]
]
ПОСЛЕДНИЕ ОБНОВЛЕНИЯ:
Первые данные верны. Я не знаю, как я получил вторые данные, но Event.overlay.getPath () Менеджера чертежей. GetArray (); координаты первый. И первый ответ ZerosAndOnes - решение для моего случая. Спасибо.