গুগল ম্যাপস এপিআই কেবল এজেএক্স ব্যবহার করার সময় "আনকচড রেফারেন্স এরিয়ার: গুগল সংজ্ঞায়িত নয়" ছোঁড়ে


85

আমার একটি পৃষ্ঠা রয়েছে যা একটি মানচিত্র প্রদর্শন করতে গুগল ম্যাপস এপিআই ব্যবহার করে। আমি যখন পৃষ্ঠাটি সরাসরি লোড করি তখন মানচিত্রটি উপস্থিত হয়। তবে, আমি যখন এজেএক্স ব্যবহার করে পৃষ্ঠাটি লোড করার চেষ্টা করি তখন ত্রুটিটি পাই:

Uncaught ReferenceError: google is not defined

কেন?

এই মানচিত্র সহ পৃষ্ঠা:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  var chicago = new google.maps.LatLng(41.850033, -87.6500523);
  var mapOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago }
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
  directionsDisplay.setMap(map);
}
$(document).ready(function(e) { initialize() });
</script>
<div id="map_canvas" style="height: 354px; width:713px;"></div>

এবং এই পৃষ্ঠাটি এজেএক্স কল সহ:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(e) {
    $('button').click(function(){
        $.ajax({
            type: 'GET', url: 'map-display',
            success: function(d) { $('#a').html(d); }
        })
    });
});
</script>
<button>Call</button>
<div id="a"></div>
</body>
</html>

আপনার সাহায্যের জন্য ধন্যবাদ.

উত্তর:


88

ডিফল্টরূপে দস্তাবেজটি লোড করা শেষ হওয়ার পরে API টি লোড করা যায় না, আপনাকে এটি অ্যাসিঙ্ক্রোনাস লোড করতে হবে।

মানচিত্রটি সহ পৃষ্ঠাটি পরিবর্তন করুন:

<div id="map_canvas" style="height: 354px; width:713px;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=initialize"></script>
<script>
var directionsDisplay,
    directionsService,
    map;

function initialize() {
  var directionsService = new google.maps.DirectionsService();
  directionsDisplay = new google.maps.DirectionsRenderer();
  var chicago = new google.maps.LatLng(41.850033, -87.6500523);
  var mapOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago }
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
  directionsDisplay.setMap(map);
}

</script>

আরও তথ্যের জন্য একবার দেখুন: /programming/14184956/async-google-maps-api-v3-undefined-is-not-a-function/14185834#14185834

উদাহরণ: http://jsfiddle.net/doktormolle/zJ5em/


ধন্যবাদ! এখন নিখুঁত জ্ঞান তোলে। সবেমাত্র একটি ফলো-আপ ছিল: আমার মানচিত্রটি সব ধূসর হয়ে আসছে (গুগল লোগো, লিঙ্ক এবং যদিও ব্যবহারের শর্তাদি সহ)। আমি ফায়ারবগে দেখতে পাচ্ছি যে টাইলগুলি লোড হচ্ছে। আপনি কি জানেন কারণ কি হতে পারে?
সবুজ

সাধারণত এটি জুম, মানচিত্র টাইপআইডি বা কেন্দ্রের মতো অনুপস্থিত / অবৈধ মানচিত্র-বিকল্পের ফলস্বরূপ (এগুলির সবগুলি প্রয়োজনীয় হয়, যখন তারা নিখোঁজ থাকে বা একটি অবৈধ মান নির্ধারিত হয়, ফ্যালব্যাকের জন্য কোনও ডিফল্ট মান থাকে না, মানচিত্র রেন্ডার করা যায়নি)
ডাঃমল

4
সমস্যাটি এই বিষয়টির সাথে সম্পর্কিত যে আমি মানচিত্রটি প্রদর্শিত হচ্ছে এমন ডিভটি লুকিয়ে রেখেছি। এখানে এর জন্য আমার একটি পৃথক প্রশ্ন রয়েছে: স্ট্যাকওভারফ্লো
সবুজ সবুজ

39

আমি জানি যে এই উত্তরটি এই প্রশ্নের ইস্যুটির সাথে সরাসরি সম্পর্কিত নয় তবে কিছু ক্ষেত্রে "অপ্রকাশিত রেফারেন্স এরর: গুগল সংজ্ঞায়িত করা হয়নি" সমস্যাটি ঘটবে যদি আপনার জেএস ফাইলটি গুগল ম্যাপস এপিআই ব্যবহার করার আগে বলা হয় ... সুতরাং এটি করবেন না:

<script type ="text/javascript" src ="SomeJScriptfile.js"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>

আমার গুগল ম্যাপস এপি অন্তর্ভুক্ত করা হয়েছে আমার স্ব-সংজ্ঞায়িত জেএসের উপরে, এখনও এই ত্রুটিটি পেয়েছে তবে সারাক্ষণ নয়। কখনও কখনও, এটি ঠিক জরিমানা করে। আমাকে এই ত্রুটিটি ফাঁদে ফেলতে হবে তবে এর কারণ কী তা আমার কোনও ধারণা নেই।
জেএএলম্ব্রো

নীচের লিঙ্কে @ জেকএলম্ব্রো রেফারেন্স গৃহীত উত্তর। আমি মনে করি এটি বেশিরভাগ উদাহরণগুলিকে কভার করে যেখানে আপনার জেএসক্রিপ্ট লাইব্রেরি ফাইলগুলির ক্রম সম্পর্কে বিশেষত উদ্বিগ্ন হওয়া উচিত। আপনি এই থ্রেডের মূল উত্তরে প্রস্তাবিত হিসাবে এটি আরও ভাল পরিচালনা করতে অ্যাসিনক্রোনাস সংযোগ ব্যবহার করার বিষয়টি বিবেচনা করতে চাইতে পারেন। stackoverflow.com/questions/4987977/...
রেক্স CoolCode চার্লস

8

অনুমান হিসাবে, আপনি নিজের কাজটি আরম্ভ করার আগে কিছু শুরু করছেন: var directionsService = new google.maps.DirectionsService();

এটি ফাংশনে সরান, সুতরাং পৃষ্ঠাটি লোড হওয়ার আগে এটি চেষ্টা করবে না এবং কার্যকর করবে না।

var directionsDisplay, directionsService;
var map;
function initialize() {
  directionsService = new google.maps.DirectionsService();
  directionsDisplay = new google.maps.DirectionsRenderer();

5

আনকড রেফারেন্স এরির: গুগল সংজ্ঞায়িত নয় ত্রুটি চলে যাবে যখন মানচিত্রের API স্ক্রিপ্ট ট্যাগ থেকে async ডিফার সরানো হবে ।


3

আপনার সমস্ত কর্মক্ষেত্র অনুসরণ করার পরে আমার পক্ষে কী কাজ করেছিল তা হ'ল এপিআই কল করা:

 <script async defer src="https://maps.googleapis.com/maps/api/js?key=you_API_KEY&callback=initMap&libraries=places"
            type="text/javascript"></script>

আমার আগে: <div id="map"></div>

আমি .এএসপি নেট (এমভিসি) ব্যবহার করছি


0

আমার জন্য

এই লাইনটি যুক্ত করা হচ্ছে

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

এই লাইনের আগে।

<script id="microloader" type="text/javascript" src=".sencha/app/microloader/development.js"></script>

কাজ করছে


0

সবার জন্য প্রাসঙ্গিক নাও হতে পারে তবে এই সামান্য বিবরণটি আমার কাজ না করার কারণ করেছিল:

এটি থেকে ডিভ পরিবর্তন করুন:

<div class="map">

এটি:

<div id="map">

-2

হতে পারে ব্যবহার

<body onload="initialize();">

পরিবর্তে

$(function(){ 
     initialize();
});

সাহায্য করতে পারি.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.