angelzzz, вы, вероятно, обращаетесь аяксом к файлу getdata.php?
Если так, то var points = JSON.parse(response); |
Если я убираю всю конструкцию foreach,
и делаю просто echo json_encode($response); то возможно нет смысла в этих строках: $response = json_decode($result, true); $id = $response[0]['Id']; вот в этой части? $result = curl_exec($ch); $response = json_decode($result, true); $id = $response[0]['Id']; echo json_encode($response); и можно просто echo $result Только и тот и другой код выводит {"Id":1122,"Latitude":55.682675,"LocationType":1," Longitude":37.897516,"Opening":false,"OutDescripti on":"\u041f\u0443\u043d\u043a\u0442 \u0432\u044b\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u 044f \u0432 \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u 0435 \u041b\u041f\u0422\u0423\u0421. \u041f\u0435\u0448\u043a\u043e\u043c: \u0436\/\u0434 \u0441\u0442. \u041b\u044e\u0431\u0435\u0440\u0446\u044b-1, \u0421\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430. \u041f\u0440\u043e\u0439\u0442\u0438 \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0441\u0435\u0440\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u043c\u0443 2-\u044d\u0442\u0430\u0436\u043d\u043e\u043c\u0443 \u0437\u0434\u0430\u043d\u0438\u044e \u0441 \u0432\u044b\u0432\u0435\u0441\u043a\u043e\u0439 \u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0421\u0432\u044f\u0437\u044c. \u041d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u 044f \u043c\u0435\u0436\u0434\u0443 \u0430\u0432\u0442\u043e\u0441\u0442\u0430\u043d\u 0446\u0438\u0435\u0439 \u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u 044c\u043d\u044b\u043c |
Ну да, можно отправить клиенту $result и распарсить его JS'ом уже в браузере.
|
angelzzz,
json_encode($response, JSON_UNESCAPED_UNICODE) и национальные символы не будут преобразовываться в юникод, что сократит объем передаваемых данных. |
Цитата:
|
Цитата:
var points = JSON.parse(response) получайте его свойства points[0].Latitude и т.д. |
Цитата:
|
Давайте попробую заново сформулировать вопрос:
есть АПИ сторонний, откуда я получаю в ответ Array ( [0] => Array ( [Id] => 1122 [Latitude] => 55.682675 [LocationType] => 1 [Longitude] => 37.897516 [Opening] => [OwnerId] => 923 ) [1] => Array ( [Id] => 1136 [Latitude] => 55.682661 [LocationType] => 1 [Longitude] => 37.886621 [Opening] => [OwnerId] => 923 ) [2] => Array и таких массивов около 1500 тысяч, количество полей урезал для удобства, их там более 30 С помощью php файла getdata.php я делаю запрос в этот АПИ echo $result Теперь мне в файле index.html нужно получить значения Latitude и Longitude в переменной points в таком виде [55.831903,37.411961] points = [ [55.831903,37.411961], [55.763338,37.565466], [55.763338,37.565466], [55.744522,37.616378], [55.780898,37.642889], [55.793559,37.435983], [55.800584,37.675638], [55.716733,37.589988], [55.775724,37.560840], [55.822144,37.433781], [55.874170,37.669838], [55.716770,37.482338], [55.780850,37.750210], [55.810906,37.654142], [55.865386,37.713329], [55.847121,37.525797], [55.778655,37.710743], [55.623415,37.717934], [55.863193,37.737000], [55.866770,37.760113], [55.698261,37.730838], [55.633800,37.564769], [55.639996,37.539400], [55.690230,37.405853], [55.775970,37.512900], [55.775777,37.442180], [55.811814,37.440448], [55.751841,37.404853], [55.627303,37.728976], [55.816515,37.597163], [55.664352,37.689397], [55.679195,37.600961], [55.673873,37.658425], [55.681006,37.605126], [55.876327,37.431744], [55.843363,37.778445], [55.875445,37.549348], [55.662903,37.702087], [55.746099,37.434113], [55.838660,37.712326], [55.774838,37.415725], [55.871539,37.630223], [55.657037,37.571271], [55.691046,37.711026], [55.803972,37.659610], [55.616448,37.452759], [55.781329,37.442781], [55.844708,37.748870], [55.723123,37.406067], [55.858585,37.484980] ], ymaps.ready(function () { var myMap = new ymaps.Map('map', { center: [55.751574, 37.573856], zoom: 9, behaviors: ['default', 'scrollZoom'] }, { searchControlProvider: 'yandex#search' }), /** * Создадим кластеризатор, вызвав функцию-конструктор. * Список всех опций доступен в документации. * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#constructor-summary[/url] */ clusterer = new ymaps.Clusterer({ /** * Через кластеризатор можно указать только стили кластеров, * стили для меток нужно назначать каждой метке отдельно. * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage.xml[/url] */ preset: 'islands#invertedVioletClusterIcons', /** * Ставим true, если хотим кластеризовать только точки с одинаковыми координатами. */ groupByCoordinates: false, /** * Опции кластеров указываем в кластеризаторе с префиксом "cluster". * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark.xml[/url] */ clusterDisableClickZoom: true, clusterHideIconOnBalloonOpen: false, geoObjectHideIconOnBalloonOpen: false }), /** * Функция возвращает объект, содержащий данные метки. * Поле данных clusterCaption будет отображено в списке геообъектов в балуне кластера. * Поле balloonContentBody - источник данных для контента балуна. * Оба поля поддерживают HTML-разметку. * Список полей данных, которые используют стандартные макеты содержимого иконки метки * и балуна геообъектов, можно посмотреть в документации. * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml[/url] */ getPointData = function (index) { return { balloonContentBody: 'балун <strong>метки ' + index + '</strong>', clusterCaption: 'метка <strong>' + index + '</strong>' }; }, /** * Функция возвращает объект, содержащий опции метки. * Все опции, которые поддерживают геообъекты, можно посмотреть в документации. * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml[/url] */ getPointOptions = function () { return { preset: 'islands#violetIcon' }; }, points = [ [55.831903,37.411961], [55.763338,37.565466], [55.763338,37.565466], [55.744522,37.616378], [55.780898,37.642889], [55.793559,37.435983], [55.800584,37.675638], [55.716733,37.589988], [55.775724,37.560840], [55.822144,37.433781], [55.874170,37.669838], [55.716770,37.482338], [55.780850,37.750210], [55.810906,37.654142], [55.865386,37.713329], [55.847121,37.525797], [55.778655,37.710743], [55.623415,37.717934], [55.863193,37.737000], [55.866770,37.760113], [55.698261,37.730838], [55.633800,37.564769], [55.639996,37.539400], [55.690230,37.405853], [55.775970,37.512900], [55.775777,37.442180], [55.811814,37.440448], [55.751841,37.404853], [55.627303,37.728976], [55.816515,37.597163], [55.664352,37.689397], [55.679195,37.600961], [55.673873,37.658425], [55.681006,37.605126], [55.876327,37.431744], [55.843363,37.778445], [55.875445,37.549348], [55.662903,37.702087], [55.746099,37.434113], [55.838660,37.712326], [55.774838,37.415725], [55.871539,37.630223], [55.657037,37.571271], [55.691046,37.711026], [55.803972,37.659610], [55.616448,37.452759], [55.781329,37.442781], [55.844708,37.748870], [55.723123,37.406067], [55.858585,37.484980] ], geoObjects = []; /** * Данные передаются вторым параметром в конструктор метки, опции - третьим. * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Placemark.xml#constructor-summary[/url] */ for(var i = 0, len = points.length; i < len; i++) { geoObjects[i] = new ymaps.Placemark(points[i], getPointData(i), getPointOptions()); } /** * Можно менять опции кластеризатора после создания. */ clusterer.options.set({ gridSize: 80, clusterDisableClickZoom: true }); /** * В кластеризатор можно добавить javascript-массив меток (не геоколлекцию) или одну метку. * @see [url]https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#add[/url] */ clusterer.add(geoObjects); myMap.geoObjects.add(clusterer); /** * Спозиционируем карту так, чтобы на ней были видны все объекты. */ myMap.setBounds(clusterer.getBounds(), { checkZoomRange: true }); }); Как это сделать? |
Если из полученного массива на клиент нужно передать только координаты, то тогда формируйте массив, а затем отдавайте го как JSON. Но естественно не таким образом как у вас в коде. Можно так:
echo json_encode(array_map(function($v) { return [$v['Latitude'], $v['Longitude']]; }, $result)); если $result, это есть исходный массив. Если же на клиенте требуется все, то можно уже на клиенте из полученного объекта сформировать массив координат. PS, если представленный код выводиться в индексном файле и в строку 58 и нужно вставить эти координаты, то можно так: points = <?=json_encode(array_map(function($v) { return [$v['Latitude'], $v['Longitude']]; }, $result))?> |
Цитата:
|
Часовой пояс GMT +3, время: 03:51. |