Я пытаюсь сделать изображение с помощью MapServer, который отображает только один слой с меткой. Я написал следующий файл карты:
MAP
NAME "TextLayer"IMAGETYPE PNG
EXTENT -180 -90 180 90
IMAGECOLOR 0 0 255
PROJECTION
"init=epsg:4269"END
WEB
METADATA
"ows_title" "WMS service""ows_onlineresource" "XXX.XXX.XXX.XXX""ows_enable_request" "*""ows_crs" "EPSG:4269"END
END
LAYER
NAME "labellayer"STATUS ON
TYPE POINT
FEATURE
POINTS 100 100 END
TEXT "The text on the image"END
CLASS
LABEL
SIZE 8
ANTIALIAS true
COLOR 255 0 0
POSITION cc
END
END
END
END
Я генерирую изображение с помощью PHP с помощью ms_newMapObjFromString (). Тем не менее, все, что я получаю, это прозрачное изображение без текста. Что мне не хватает?
РЕДАКТИРОВАТЬ:
PHP-код:
public function PrintImage($request, $mapFileString)
{
$mapServer_MapObject = ms_newMapObjFromString($mapFileString);
ms_ioinstallstdouttobuffer();
$mapServer_MapObject->owsdispatch($request);
$contenttype = ms_iostripstdoutbuffercontenttype();
ms_iostripStdoutBufferContentType();
//If content type is 'image/png' the image is succesfully requested -> show the image
if($contenttype == "image/png")
{
header('Content-type: image/png');
echo ms_iogetstdoutbufferbytes();
}
//Else an error occured -> show the error
else
{
header('Content-type: xml');
echo ms_iogetstdoutbufferstring();
}
}
$ MapFileString — строка, опубликованная выше.
Экстент вашей карты не соответствует используемой вами проекции. Вы, вероятно, имеете в виду проекцию EPSG: 4326, потому что -180 -90 180 90 — максимальное расширение этой проекции.
Другая проблема заключается в том, что ваша точка (POINTS 100 100) находится за пределами запрошенной вами ограничительной рамки (EXTENT -180 -90 180 90)
Попробуйте поставить точку в центре изображения с помощью
POINTS 0 0
PS: если не получится, выложи свой php код
Других решений пока нет …