Saya mencoba menggunakan Google MAP API v3 dengan kode berikut.
<h2>Topology</h2>
<script src="https://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="{% url css_media 'tooltip.topology.css' %}" />
<link rel="stylesheet" type="text/css" href="{% url css_media 'tooltip.css' %}" />
<style type="text/css" >
#map_canvas {
width:300px;
height:300px;
}
</style>
<script type="text/javascript">
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
</script>
<div id="map_canvas"> </div>
Ketika saya menjalankan kode ini, browser mengatakan ini.
UnEught TypeError: Tidak dapat membaca properti 'offsetWidth' dari nol
Saya tidak tahu, karena saya mengikuti arahan yang diberikan dalam tutorial ini .
Apakah Anda punya petunjuk?
sumber
Untuk orang lain yang mungkin masih memiliki masalah ini , bahkan setelah mencoba rekomendasi di atas, menggunakan pemilih yang salah untuk kanvas peta Anda pada fungsi inisialisasi dapat menyebabkan masalah yang sama karena fungsi ini mencoba mengakses sesuatu yang tidak ada. Periksa ulang apakah Id peta Anda cocok dengan fungsi inisialisasi Anda dan HTML Anda atau kesalahan yang sama ini dapat terjadi.
Dengan kata lain, pastikan ID Anda cocok. ;)
sumber
Anda juga bisa mendapatkan kesalahan ini jika Anda tidak menentukan
center
atauzoom
dalam opsi peta Anda.sumber
Google menggunakan
id="map_canvas"
danid="map-canvas"
dalam sampel, periksa ulang dan periksa ulang id: Dsumber
Tahun, jawaban geocodezip benar. Jadi ubah kode Anda seperti ini: (jika Anda masih dalam kesulitan, atau mungkin orang lain di masa depan)
sumber
Jadi saya menambahkan skenario gagal saya agar ini berfungsi. Saya punya
<div id="map>
di mana saya memuat peta dengan:dan div pada awalnya disembunyikan dan tidak secara eksplisit mengatur lebar dan tinggi nilai jadi itu ukurannya
width x 0
. Setelah saya mengatur ukuran div ini di CSS seperti inisemuanya bekerja! Semoga ini bisa membantu seseorang.
sumber
Untuk lebih banyak lagi orang lain yang mungkin masih mengalami masalah ini, saya menggunakan
<div id="map1" />
tag yang menutup sendiri , dan div kedua tidak muncul, dan tampaknya tidak berada di dom. segera setelah saya mengubahnya menjadi dua tag buka & tutup<div id="map1"></div>
itu berfungsi. hthsumber
Juga berhati-hatilah untuk tidak menulis
benar:
sumber
Saya punya satu kutipan di blog saya
dan menggantinya dengan tanda kutip ganda
Ini berhasil bagi saya.
sumber
Mengubah ID (di semua 3 tempat) dari "map-canvas" ke "map" memperbaikinya untuk saya, meskipun saya telah memastikan ID-nya sama, div memiliki lebar dan tinggi, dan kode tidak berjalan sampai setelah jendela memuat panggilan. Itu bukan tanda hubung; tampaknya tidak berfungsi dengan ID selain "peta".
sumber
Juga, pastikan Anda tidak menempatkan simbol hash (#) di dalam pemilih Anda di a
pernyataan. Itu bukan jQuery. Hanya pengingat cepat untuk seseorang yang sedang terburu-buru.
sumber
Saya memiliki masalah yang sama tetapi masalahnya adalah bahwa zoom tidak didefinisikan dalam objek opsi yang diberikan ke Google Maps.
sumber
Jika Anda membuat beberapa peta dalam satu lingkaran, jika elemen DOM peta tunggal tidak ada, itu akan merusak semuanya. Pertama, periksa untuk memastikan elemen DOM ada sebelum membuat objek Peta baru.
sumber
Jika Anda menggunakan asp.net Webforms dan mendaftarkan skrip dalam kode di belakang halaman menggunakan halaman master, jangan lupa untuk menggunakan clientID elemen peta (vb.net):
sumber
Untuk mengatasinya Anda perlu menambahkan
async defer
ke skrip.Seharusnya seperti ini:
Lihat di sini arti dari async defer.
Karena Anda akan memanggil fungsi dari file js utama, Anda juga ingin memastikan bahwa ini setelah fungsi tempat Anda memuat skrip utama.
sumber
Pastikan Anda menyertakan perpustakaan Places
&libraries=places
parameter saat pertama kali memuat API.Sebagai contoh:
sumber
Saya tahu saya agak terlambat ke pesta, hanya ingin menambahkan bahwa kesalahan juga bisa terjadi ketika div tidak ada di halaman. Anda juga dapat memeriksa apakah div ada terlebih dahulu sebelum memuat panggilan fungsi google maps. Sesuatu seperti
sumber
Dan di controller
gunakan $ scope.init = function () {...} alih-alih google.maps.event.addDomListener (window, "load", init) {...}
Semoga ini bisa membantu Anda.
sumber
Sebenarnya cara termudah untuk memperbaikinya adalah dengan memindahkan objek Anda sebelum kode Javascript berhasil. Saya kira objek jawaban Anda dimuat setelah kode javascript.
sumber
Dalam kasus saya, masalah semacam ini diselesaikan menggunakan
defer
https://developer.mozilla.org/en/docs/Web/HTML/Element/script<script src="<your file>.js" defer></script>
Anda perlu mempertimbangkan dukungan peramban akun untuk opsi ini (saya belum melihat masalah)
sumber
Pastikan Anda tidak mengesampingkan
window.self
Masalah saya: Saya telah membuat komponen dan menulis
self = this
alih-alih varself = this
. Jika Anda tidak menggunakan kata kuncivar
, JS akan meletakkan variabel itu di objek jendela, jadi saya menimpawindow.self
yang menyebabkan kesalahan ini.sumber
Ini adalah pengeditan pos yang sebelumnya dihapus untuk memuat konten dari jawaban yang ditautkan, dalam jawaban itu sendiri. Tujuan untuk menerbitkan kembali jawaban ini adalah berfungsi sebagai PSA untuk pengguna 0.9+ React yang juga tersandung ke dalam masalah ini.
pos yang diedit asli
Juga mendapat kesalahan ini saat menggunakan ReactJS saat mengikuti posting blog ini . Komentar sahat di sini membantu - lihat isi komentar sahat di bawah.
sumber
Kegagalan saya adalah untuk digunakan
sebagai opsi, bukan opsi yang benar
sumber
tambahkan penangguhan async pada awal panggilan kunci api peta.
sumber
Dalam kasus yang saya hadapi, div peta dibuat secara kondisional tergantung jika lokasi diumumkan kepada publik. Jika Anda tidak yakin apakah kanvas div peta akan ada di halaman, cukup periksa apakah Anda
document.getElementById
mengembalikan elemen dan hanya memohon peta jika ada:sumber
Di sini masalahnya adalah tautan API tanpa
key
param:Cara itu berfungsi dengan baik.
sumber