こんにちは、この問題に対するアドバイスは大歓迎です。単純な問題のように思えますが、非常に困難になっています。
https://developers.google.com/maps/articles/phpsqlajaxにあるチュートリアル「Using PHP/MySQL with Google Maps」に従って、kml/xml ファイルを生成しています。生成している kml ファイルは、特定の場所に単に目印を作成するのではなく、一連の建物のポリゴン境界を生成しているという点で、例にあるファイルとは異なります。このページのコードは以下のとおりです...
// Creates the Document.
$dom = new DOMDocument('1.0', 'UTF-8');
// Creates the root KML element and appends it to the root document.
$node = $dom->createElementNS('http://earth.google.com/kml/2.1', 'kml');
$parNode = $dom->appendChild($node);
// Creates a KML Document element and append it to the KML element.
$dnode = $dom->createElement('Document');
$docNode = $parNode->appendChild($dnode);
//Style 1
//Set Style ID
$restStyleNode = $dom->createElement('Style');
$restStyleNode->setAttribute('id', '#style1');
$restIconstyleNode = $dom->createElement('IconStyle');
$restIconstyleNode->setAttribute('id', 'BuildingIcon');
//Set LineStyle
$restIconNode = $dom->createElement('LineStyle');
$restHref = $dom->createElement('colour', 'FF990000');
$restIconNode->appendChild($restHref);
$restWidth = $dom->createElement('width', '2');
$restIconNode->appendChild($restWidth);
$restIconstyleNode->appendChild($restIconNode);
$restStyleNode->appendChild($restIconstyleNode);
$docNode->appendChild($restStyleNode);
//Set Polystyle
$restIconNode = $dom->createElement('PolyStyle');
$restHref = $dom->createElement('colour', 'FFCC0000');
$restIconNode->appendChild($restHref);
$restFill = $dom->createElement('fill', '1');
$restIconNode->appendChild($restFill);
$restOutline = $dom->createElement('outline', '1');
$restIconNode->appendChild($restOutline);
$restIconstyleNode->appendChild($restIconNode);
$restStyleNode->appendChild($restIconstyleNode);
$docNode->appendChild($restStyleNode);
//Style 2
//Set Style ID
$restStyleNode = $dom->createElement('Style');
$restStyleNode->setAttribute('id', '#style2');
$restIconstyleNode = $dom->createElement('IconStyle');
$restIconstyleNode->setAttribute('id', 'HighfieldIcon');
//Set LineStyle
$restIconNode = $dom->createElement('LineStyle');
$restHref = $dom->createElement('colour', 'ff000000');
$restIconNode->appendChild($restHref);
$restWidth = $dom->createElement('width', '2');
$restIconNode->appendChild($restWidth);
$restIconstyleNode->appendChild($restIconNode);
$restStyleNode->appendChild($restIconstyleNode);
$docNode->appendChild($restStyleNode);
//Set Polystyle
$restIconNode = $dom->createElement('PolyStyle');
$restHref = $dom->createElement('colour', 'ff000000');
$restIconNode->appendChild($restHref);
$restFill = $dom->createElement('fill', '1');
$restIconNode->appendChild($restFill);
$restOutline = $dom->createElement('outline', '1');
$restIconNode->appendChild($restOutline);
$restIconstyleNode->appendChild($restIconNode);
$restStyleNode->appendChild($restIconstyleNode);
$docNode->appendChild($restStyleNode);
// Iterates through the MySQL results, creating one Placemark for each row.
while ($row = @mysql_fetch_assoc($result))
{
// Creates a Placemark and append it to the Document.
$node = $dom->createElement('Placemark');
$placeNode = $docNode->appendChild($node);
// Creates an id attribute and assign it the value of id column.
$placeNode->setAttribute('id', 'placemark' . $row['buildingID']);
// Create name, and description elements and assigns them the values of the name and address columns from the results.
$nameNode = $dom->createElement('name',htmlentities($row['name']));
$placeNode->appendChild($nameNode);
$styleUrl = $dom->createElement('styleUrl', $row['styleID']);
$placeNode->appendChild($styleUrl);
// Creates a Polygon element.
$polygonNode = $dom->createElement('Polygon');
$placeNode->appendChild($polygonNode);
//Add extrude information
$restExtrude = $dom->createElement('extrude', '1');
$polygonNode->appendChild($restExtrude);
//Add altitude information
$restAltitude = $dom->createElement('altitudeMode', 'relativeToGround');
$polygonNode->appendChild($restAltitude);
//Add outerBoundaryIsNode
$outerBoundaryIsNode = $dom->createElement('outerBoundaryIs');
$polygonNode->appendChild($outerBoundaryIsNode);
//Add LinearRing Node
$LinearRingNode = $dom->createElement('LinearRing');
$outerBoundaryIsNode->appendChild($LinearRingNode);
//Adding information into linear ring node
$tessellate = $dom->createElement('tessellate', '1');
$LinearRingNode->appendChild($tessellate);
// Creates a coordinates element and gives it the value of the lng and lat columns from the results.
$coorStr = $row['longitude1'] . ',' . $row['latitude1'] . ' ' . $row['longitude2'] . ',' . $row['latitude2'] . ' ' . $row['longitude3'] . ',' . $row['latitude3'] . ' ' . $row['longitude4'] . ',' . $row['latitude4'] . ' ' . $row['longitude5'] . ',' . $row['latitude5'];
$coorNode = $dom->createElement('coordinates', $coorStr);
$LinearRingNode->appendChild($coorNode);
}
$kmlOutput = $dom->saveXML();
header('Content-type: application/vnd.google-earth.kml+xml');
echo $kmlOutput;
マップにロードして生成されたkmlファイルをチェックしましたが、結果には満足していますが、phpファイルが生成しているkmlファイルをWebサイトに表示させる方法を一生理解できません。私はそれを行う方法を考えることはできません。チュートリアルが示唆することに従ってみましたが、それが何をしているのか本当に理解できず、機能させることができません。kml ファイルを動的に生成するための php コードを開発したので、難しい部分をやったと思っていましたが、間違っていたと感じています。非常に重要なので、アドバイスをいただければ幸いです。
現時点では、次のコードを使用しています。
<script src="http://maps.google.com/maps?file=api&v=2&key=key
" type="text/javascript">
var map;
var geoXml;
var toggleState = 1;
function initialize()
{
if (GBrowserIsCompatible())
{
geoXml = new GGeoXml("Locationoffile.part");
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(50.xxxxx,-1.xxxxxxx), 16);
map.addControl(new GLargeMapControl());
map.addOverlay(geoXml);
}
}
function toggleMyKml()
{
if (toggleState == 1)
{
map.removeOverlay(geoXml);
toggleState = 0;
}
else
{
map.addOverlay(geoXml);
toggleState = 1;
}
}
php で生成された kml ファイルから出力を静的な場所にコピーすることによって、マップを生成します。これは機能します。代わりに私のphpファイルをロードするには、これをどれだけ編集する必要がありますか? あなたの助けにもかかわらず、私はまだ少し混乱しています。