1

一連の緯度/経度ポイントがxmlファイルに書き込まれ、ポイントとしてGoogleマップにインポートされたmysqlテーブルがあります。これはうまく機能しているようですが、単にポイントでマークするのではなく、それぞれの間にポリラインを生成したいと思います。開発者向けドキュメントを見ると、この例では、ライン/ポイントのセットごとに新しい latlng オブジェクトを作成することを繰り返すことに気付きました。一連のポイントを動的に呼び出して、データベースから複数のラインを生成する方法はありますか? これが明らかな修正のように思われる場合は申し訳ありません-私はマップAPIに少し慣れていません。前もって感謝します!

私が使用している出力 XML ファイルは次のようになります。

Location name="2012-04-01 12:28:18" lat="42.9523010667" lon="-78.8189444333"/
Location name="2012-04-01 12:28:06" lat="42.95219345" lon="-78.81931905"/
Location name="2012-04-01 12:27:54" lat="42.9522356" lon="-78.8192848667"/..... etc

HTML/スクリプト XML 座標をマップに呼び出す:

function load() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(42.9521, -78.8198), 20);

    GDownloadUrl("gmaps_genxml2.php", function(data) {
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("Location");
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("timestamp");
        var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                parseFloat(markers[i].getAttribute("lon")));
        var marker = createMarker(point, name);
        map.addOverlay(marker); 
      }
    });

developers.google doc で問題となっているコード スニペット:

var flightPlanCoordinates = [
new google.maps.LatLng(37.772323, -122.214897),
new google.maps.LatLng(21.291982, -157.821856),
new google.maps.LatLng(-18.142599, 178.431),
new google.maps.LatLng(-27.46758, 153.027892)];
  var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2});

  flightPath.setMap(map);}}}

function createMarker(point, name) {
  var marker = new GMarker(point, customIcons[type]);
  var html = "<b>" + name;
  GEvent.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
  });

  return marker;
}

現在、コンソールにエラーは表示されていません。これは、元の投稿から前の 2 つのコード スニペットを実装しようとした方法ですが、マップに線や点を表示することができません。それは私がポイント変数を定義している方法かもしれません/それは配列を格納しているのではなく、単一のポイントですか?? 「ポイント」の定義にも [] を使用しようとしましたが、これは機能しませんでした/エラーも表示されませんでした...

function load() {
if (GBrowserIsCompatible()) {
// Create an instance of Google map
var map = new GMap2(document.getElementById("map"));
// Tell the map where to start
map.setCenter(new GLatLng(42.9521, -78.8198), 20);

GDownloadUrl("gmaps_genxml2.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("Location");
for (var i = 0; i < markers.length; i++) {
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon")));
var polyline = new GPolyline(point, '#ff0000', 5, 0.7);
map.addOverlay(polyline);
}
});
}} 
4

1 に答える 1

0

とった!ここで私はインターネットに尋ねていました、そして私の後ろに座っていた子供はずっと知っていました...

アレイを正しく設定していませんでした。この問題を解決するには: ----空の配列を作成します ----「.push」を使用して配列に挿入します

 function load() {

  if (GBrowserIsCompatible()) {
// Create an instance of Google map
var map = new GMap2(document.getElementById("map"));

// Tell the map where to start
map.setCenter(new GLatLng(42.9521, -78.8198), 20);





GDownloadUrl("gmaps_genxml2.php", function(data) {
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("Location");
      var points = [];
      for (var i = 0; i < markers.length; i++) {

        points.push(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon"))));
      }
      var polyline = new GPolyline(points, '#ff0000', 5, 0.7);
        map.addOverlay(polyline);
    });

}}
于 2012-04-16T23:46:15.073 に答える