bagaimana cara mengintegrasikan sepasang tabel fusi dengan GroundOverlays dari file KML? Diperbarui dengan upaya saya untuk menyelesaikannya (tidak berhasil)

Versi singkat pertanyaan saya:
Bagaimana cara mengintegrasikan sepasang tabel fusi Google Maps (poligon dan spidol) dengan GroundOverlays dari file KML? Semuanya dapat diklik.

Latar Belakang: Saya sedang mengerjakan proyek pemetaan sejarah interaktif yang menggunakan 2 lapisan tabel fusi (satu lapisan adalah poligon, yang lainnya adalah penanda lokasi).

Saya juga ingin melapisi peta lama melalui GroundOverlay -- yang saat ini tidak mungkin dilakukan dengan tabel fusi -- jadi saya telah bereksperimen dengan GroundOverlay dalam file KML.

Saya memperumitnya dengan menambahkan pendengar di kedua halaman untuk mengontrol kotak klik.

Saya memiliki dua laman web:
1. tabel fusi dan
2. groundoverlay KML,
keduanya berfungsi dengan baik.

Yang ingin saya lakukan adalah mengintegrasikannya ke dalam satu halaman. Saya bukan seorang programmer dan tidak cukup memahami JS untuk mewujudkan hal ini.

Scripting yang digunakan semuanya diadaptasi dari contoh yang ditemukan online.

Inilah halaman kerja pertama saya:
http://wendysmithtoronto.com/mapping/townofyork-fusiontables2.html

Anda akan menemukan tautan ke halaman kedua di sana.

Bantuan Anda akan sangat dihargai. Terima kasih. Wendy


Memperbarui:

Inilah upaya saya untuk menggabungkan dua kumpulan data saya:

http://wendysmithtoronto.com/mapping/townofyork-merged.html

Saya mencoba melakukan ini dengan menambahkan potongan skrip dari halaman kmlmaps ke halaman fusiontables, tapi jelas saya tidak meletakkan semuanya di tempat yang tepat. Atau saya kehilangan sedikit tanda baca (atau mencampuradukkan jenis skrip yang berbeda, atau?)

Peta muncul, dengan poligon dan penanda keduanya muncul dengan benar. Namun sekarang (1) ikon tabel fusi tidak dapat diklik, dan (2) peta riwayat tidak muncul. Namun, kotak centang tabel fusi (dalam tabel biru) LAKUKAN berfungsi.

Saya tidak cukup memahami JS untuk memahaminya.

Dua set kontrol dari dua halaman ada di sini (dalam kotak biru dan abu-abu, tepat di atas peta). Setiap rangkaian kontrol (pendengar & kotak klik) berfungsi dengan baik di halaman webnya masing-masing, tetapi sekarang hanya kontrol tabel fusi yang berfungsi.

Eric, terima kasih sudah melihat ini! (Saya baru saja menemukan balasan Anda. Saya telah mencari pemberitahuan balasan tetapi tidak memeriksa tempat yang tepat.)

Salam, Wendy


person wendysmith    schedule 12.03.2012    source sumber
comment
Dua halaman Anda yang ada tampaknya berfungsi dengan baik. Mengapa Anda tidak mencoba menggabungkannya menjadi satu halaman saja. Maka Anda mungkin memiliki pertanyaan yang lebih konkrit tentang apa masalah Anda. Saya telah menggabungkan Fusion Table dan lapisan KML dalam satu halaman tanpa masalah. Saya membayangkan Anda akan mengalami masalah dalam memastikan penanda dan poligon ditampilkan di atas hamparan tanah, tetapi masih terlalu dini untuk mengatakannya.   -  person Eric Bridger    schedule 12.03.2012


Jawaban (1)


File html Anda mengalami kesalahan signifikan di bagian javascript. Anda benar-benar harus mempelajari javascript dasar yang sama dan khususnya menggunakan JS dengan API GMap.

Anda membuat 2 objek peta global. Anda tidak merangkum semua kreasi peta dan lapisan di dalam fungsi inisialisasi Anda (). Semua pembuatan peta dan lapisan harus dilakukan dalam fungsi inisialisasi (saat memuat badan). Anda harus menyetel global di luar fungsi inisialisasi Anda, mis. peta, semua lapisan, dll. Akhirnya Anda gagal memanggil layer.setMap(map) pada 2 lapisan KML Anda.

Terlepas dari semua ini, saya memperbaiki file Anda, sebenarnya hanya mengatur ulang berbagai hal. Ini hanya bagian yang harus saya perbaiki. Memindahkan semuanya ke inisialisasi()

     function showbuildings(buildingcheck) {
    if (buildingcheck.checked == true)
      {
        campusmap.setMap(map);
      } else {
        campusmap.setMap(null);
      }
  }


  function showphilpotts(philpottscheck) {
    if (philpottscheck.checked == true)
      {
        philpotts.setMap(map);        
      } else {
        philpotts.setMap(null);
      }
  }



  function showbeartrail(beartrailcheck) {
    if (beartrailcheck.checked == true)
      {
        beartrail.setMap(map);        
      } else {
        beartrail.setMap(null);
      }
  }


var infoWindow = new google.maps.InfoWindow();

function openIW(FTevent) {
  // infoWindow.setContent(FTevent.infoWindowHtml);
  // infoWindow.setPosition(FTevent.latLng);
  infoWindow.setOptions(
    { 
     content: FTevent.infoWindowHtml,
     position: FTevent.latLng,
     pixelOffset: FTevent.pixelOffset
    });
  infoWindow.open(map);
}

// Globals
//Begin map parameters
var map;
var layer_2;
var layer_1;
var tableid_1 = 2920040;  // polygons
var tableid_2 = 3189980;  // houses
var zoom = 12;
var center = new google.maps.LatLng(43.652417455515476, -79.37926607055226);

var campusmap;
var philpotts;
var beartrail;

function initialize() {

  map = new google.maps.Map(document.getElementById('map_canvas'), {
    center: center,
    zoom: zoom,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });
   //End map parameters

    campusmap = new google.maps.KmlLayer('http://wendysmithtoronto.com/mapping/1851mapshoreline.kml',  {preserveViewport:true, suppressInfoWindows:true});
    campusmap.setMap(map);

    google.maps.event.addListener(campusmap, 'click', function(kmlEvent) {
      document.getElementById('sidebarinfo').innerHTML = kmlEvent.featureData.description;
    });         

   philpotts = new google.maps.KmlLayer('http://wendysmithtoronto.com/mapping/1818maplieutphilpottsd.kml', {preserveViewport:true, suppressInfoWindows:true}); 
  google.maps.event.addListener(philpotts, 'click', function(kmlEvent) {
    document.getElementById('sidebarinfo').innerHTML = kmlEvent.featureData.description;
   });    
    philpotts.setMap(map);

    beartrail = new google.maps.KmlLayer('http://wendysmithtoronto.com/mapping/1842map-jamescaneb.kml', {preserveViewport:true, suppressInfoWindows:true}); 
  google.maps.event.addListener(beartrail, 'click', function(kmlEvent) {
    document.getElementById('sidebarinfo').innerHTML = kmlEvent.featureData.description;
  }); 
   beartrail.setMap(map);

layer_2 = new google.maps.FusionTablesLayer({
  suppressInfoWindows:true,
  query: {
    select: 'Location',
    from: '3189980'
  },
styles: [
  {where: "'style' = 14", markerOptions:{ iconName:"star"}},
  {where: "'style' = 13", markerOptions:{ iconName:"wht_pushpin"}},
  {where: "'style' = 11", markerOptions:{iconName:"red_blank"}}, //town houses
  {where: "'style' = 12", markerOptions:{ iconName:"orange_blank"}}, //country homes


  {where: "'style' = 15", markerOptions:{ iconName:"target"}},
  ]});
layer_1 = new google.maps.FusionTablesLayer({
  suppressInfoWindows:true,
  query: {
    select: 'Location',
    from: '2920040'
  }}),

 google.maps.event.addListener(layer_1, "click", openIW);
 google.maps.event.addListener(layer_2, "click", openIW);
 google.maps.event.addListener(map, "click", function() { infoWindow.close();});

layer_1.setMap(map);
layer_2.setMap(map);

} // end initialize
person Eric Bridger    schedule 15.03.2012
comment
Terima kasih Eric, saya pasti akan memilihnya tetapi saya baru di dewan dan belum memiliki hak untuk memilih. Penulisan ulang naskah Anda bagus sekali! Namun belum semuanya berjalan dengan baik. Masalah: 1. kotak centang di kotak biru (mengontrol tampilan penanda) tidak berfungsi lagi. 2. Ketiga peta langsung muncul saat halaman web muncul. Laman web yang diperbarui: [link]wendysmithtoronto.com/mapping/townofyork-mergedEric.html - person wendysmith; 16.03.2012
comment
Sama-sama. 1. Kotak centang tersebut memanggil fungsi filterData() yang tidak ada dalam file. 2. Itu salahku. Saya menambahkan panggilan ke kmllayer.setMap(map) untuk ketiga lapisan kml. Anda harus mengomentari yang Anda tidak ingin kotak centang KMLL berfungsi. - person Eric Bridger; 17.03.2012
comment
Hai Eric, Maaf, sekarang tidak sepenuhnya mengikuti. (Setuju saya perlu belajar JS, tapi tidak minggu ini.) Bagaimana cara menambahkan fungsi filterData() (atau membuatnya berfungsi?) Apa yang harus dikomentari agar peta tidak muncul sampai kotak centang dicentang? Bagaimana cara membuat kotak centang penanda berfungsi kembali seperti pada file asli (Rumah kota/Rumah pedesaan/dll.)? Adakah kemungkinan Anda akan menambahkan revisi pada skrip? Saya belajar paling baik dari contoh sehingga dapat mempelajari perubahan yang ditambahkan agar segala sesuatunya berjalan lancar. Terima kasih banyak atas bantuan Anda dalam proyek ini. Wendy - person wendysmith; 17.03.2012
comment
Hai Wendy, kirimkan email kepada saya. ebridger(at)gmri.org dan saya akan mengirimkan seluruh file kepada Anda. Yang saya buat berfungsi. - person Eric Bridger; 17.03.2012
comment
Terima kasih Eric, itu berhasil. Semua bagian ini bekerja sama sekarang. Pengujian lebih lanjut telah memunculkan ide-ide lain tentang bagaimana meningkatkan proyek ini, namun saya akan mengeksplorasi lebih jauh dan kembali ke forum nanti dengan pertanyaan lain. Wendy - person wendysmith; 24.03.2012