【问题标题】:Extract coordinates from mysql with php pdo [duplicate]使用php pdo从mysql中提取坐标[重复]
【发布时间】:2014-05-20 22:07:16
【问题描述】:

这里我有这个查询:

SELECT json FROM `map` GROUP BY `id_parcele` ORDER BY `map`.`json` ASC

我得到了这个结果:

 {"zoom":14,"tilt":0,"mapTypeId":"hybrid","center":{"lat":45.74270001814216,"lng":20.013914112182643},"overlays":[{"type":"polygon","title":"","content":"","fillColor":"#000000","fillOpacity":0.3,"strokeColor":"#000000","strokeOpacity":0.9,"strokeWeight":3,"paths":[[{"lat":"21.329035778926478","lng":"73.46008301171878"},{"lat":"21.40065516914794","lng":"78.30505371484378"},{"lat":"20.106233605369603","lng":"77.37121582421878"},{"lat":"20.14749530904506","lng":"72.65808105859378"}]]},{"type":"polygon","title":"","content":"","fillColor":"#FFBF1A","fillOpacity":0.3,"strokeColor":"#000000","strokeOpacity":0.8,"strokeWeight":3,"paths":[[{"lat":"49.837982453084834","lng":"15.1611328125"},{"lat":"48.63290858589532","lng":"14.4580078125"},{"lat":"47.57652571374621","lng":"16.9189453125"},{"lat":"48.574789910928864","lng":"18.6767578125"}]]},{"type":"polygon","title":"","content":"","fillColor":"#FFBF1A","fillOpacity":0.3,"strokeColor":"#000000","strokeOpacity":0.8,"strokeWeight":3,"paths":[[{"lat":"45.672363557944365","lng":"19.80757713317871"},{"lat":"45.68447721439641","lng":"19.844999313354492"},{"lat":"45.67872055615946","lng":"19.87401008605957"},{"lat":"45.67518231607532","lng":"19.906539916992188"},{"lat":"45.65076836163794","lng":"19.910917282104492"},{"lat":"45.6477683700349","lng":"19.8647403717041"},{"lat":"45.65028837377915","lng":"19.806032180786133"}]]},{"type":"polygon","title":"","content":"","fillColor":"#FFBF1A","fillOpacity":0.3,"strokeColor":"#000000","strokeOpacity":0.8,"strokeWeight":3,"paths":[[{"lat":"44.79334817513584","lng":"20.876469612121582"},{"lat":"44.785429336353964","lng":"20.876898765563965"},{"lat":"44.78579484513546","lng":"20.8815336227417"},{"lat":"44.794322726360605","lng":"20.899386405944824"},{"lat":"44.80065690817221","lng":"20.899128913879395"},{"lat":"44.79852528999652","lng":"20.887370109558105"}]]},{"type":"polygon","title":"","content":"","fillColor":"#FFBF1A","fillOpacity":0.3,"strokeColor":"#000000","strokeOpacity":0.8,"strokeWeight":3,"paths":[[{"lat":"45.742071120421016","lng":"20.020394325256348"},{"lat":"45.738237366849404","lng":"20.019021034240723"},{"lat":"45.73458307545836","lng":"20.038676261901855"},{"lat":"45.73847698415968","lng":"20.04004955291748"}]]}]}

我现在怎样才能从这个 php 字符串中只提取第一个坐标...那么我怎样才能得到 lat":"21.329035778926478","lng":"73.46008301171878 并将其放入变量 lat 和 lng 中?

【问题讨论】:

  • 您也可以像使用任何其他 JSON 一样执行此操作,这与 Mysql 和 PDO 或坐标无关。
  • 你不能存储关系数据而不是序列化的 JSON 字符串吗?您错过了关系数据库管理系统提供的所有优势,包括仅选择所需字段的能力!
  • 我很容易像文本一样存储,因为我从“地图”表中生成了谷歌地图以供应用
  • 您不能只是从 JSON 中提取一些信息。您需要读取它,对其进行解码,然后访问密钥。无论如何,这几乎不会影响性能。

标签: php mysql pdo


【解决方案1】:

这应该可行:

$data = json_decode($json); //Your JSON data stored in $json. This decodes the JSON string into a PHP stdClass Object
echo $data->center->lat.', '.$data->center->lng; //Outputs the lat and lng from the center object
echo $data->overlays[0]->paths[0][0]->lat.', '.$data->overlays[0]->paths[0][0]->lng; //Outputs the first lat and lng from the paths within overlays

输出:

45.742700018142, 20.013914112183
21.329035778926478, 73.46008301171878

【讨论】:

  • 是的,它用于中心,但我需要路径数组中的第一个坐标???
  • 检查我所做的编辑,最后一行代码现在告诉你如何做到这一点。
猜你喜欢
  • 2013-10-05
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
相关资源
最近更新 更多