2012-05-26 15 views
5

के क्षेत्र की गणना करें मुझे अपने मानचित्र में बहुभुज का क्षेत्र प्राप्त करने की आवश्यकता है। मैंने new google.maps.geometry.spherical.computeArea का उदाहरण देखा, लेकिन मैं इसे काम नहीं कर सकता, और मुझे नहीं पता कि क्यों।बहुभुज

function dibuV(area){ 
    var i; 
    var a = new Array(); 
    for(i=0; i<area.length; i++){ 
    var uno = area[i].split(","); 
    a[i] = new google.maps.LatLng(uno[0],uno[1]); 
    } 
    poligon = new google.maps.Polygon({ 
    paths: a, 
    strokeColor: "#22B14C", 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: "#22B14C", 
    fillOpacity: 0.35 
    }) 
    poligon.setMap(map);//until here is ok 
    var z = new google.maps.geometry.spherical.computeArea(poligon.getPath()); 
    alert(z); //this is not working 
} 

उत्तर

15

त्रुटि है कि अपने कोड आप दे रहा है:

इस भीतर अवधारणाओं: Google Maps v3 API documentation से google.maps.geometry is undefined

, ज्यामिति कार्यों एक पुस्तकालय है कि डिफ़ॉल्ट रूप से लोड नहीं है का हिस्सा हैं दस्तावेज़ google.maps.geometry लाइब्रेरी में केवल उपलब्ध सुविधाओं को संदर्भित करता है। जब आप नक्शा जावास्क्रिप्ट एपीआई लोड करते हैं तो यह लाइब्रेरी डिफ़ॉल्ट रूप से लोड नहीं होती है लेकिन पुस्तकालय बूटस्ट्रैप पैरामीटर के उपयोग के माध्यम से स्पष्ट रूप से निर्दिष्ट होना चाहिए।

आदेश लोड और, आप libraries=geometry शामिल करके गूगल है कि आप ज्यामिति पुस्तकालय का उपयोग किया जाएगा, सूचित करने के लिए अपने प्रारंभिक गूगल API कॉल में जोड़कर जरूरत है अपने पृष्ठ में ज्यामिति funcitons उपयोग करने के लिएः

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script> 

यह फिर ज्यामिति पुस्तकालय लोड करेगा और आपके z चर में एक ऑब्जेक्ट होगा। काम कर कोड के साथ

टेस्ट पेज:

<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
     html, body, #map_canvas { 
     margin: 0; 
     padding: 0; 
     height: 100%; 
     } 
    </style> 
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script> 
<script type="text/javascript"> 
    var map; 
    function initialize() 
    { 
     var myOptions = { 
      zoom: 8, 
      center: new google.maps.LatLng(-34.397, 150.644), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
<script> 
function test() 
{ 
var arr = new Array() 
arr.push('51.5001524,-0.1262362'); 
arr.push('52.5001524,-1.1262362'); 
arr.push('53.5001524,-2.1262362'); 
arr.push('54.5001524,-3.1262362'); 
dibuV(arr); 
} 
function dibuV(area) 
{ 
var a = new Array(); 

for(var i=0; i<area.length; i++) 
{ 
    var uno = area[i].split(","); 
    a[i] = new google.maps.LatLng(uno[0],uno[1]); 
} 

poligon = new google.maps.Polygon({ 
    paths: a, 
    strokeColor: "#22B14C", 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: "#22B14C", 
    fillOpacity: 0.35 
}) 

poligon.setMap(map);//until here is ok 
var z = new google.maps.geometry.spherical.computeArea(poligon.getPath()); 
alert(z); //this is not working 
} 
</script> 
</head> 
<body onload="test();"> 
    <div id="map_canvas"></div> 
</body> 
</html> 
+0

आपको कैसे पता चलेगा कि उसे वह त्रुटि मिल रही है, मुझे आश्चर्य है? मेरे भाग के लिए, ड्रॉइंग लाइब्रेरी पहले ही लोड हो चुकी है, आपके द्वारा सुझाए गए स्क्रिप्ट टैग को जोड़ने से प्रक्रिया विफल हो गई है। हो सकता है कि ज्यामिति ड्राइंग लाइब्रेरी के साथ शामिल हो? मेरे लिये कार्य करता है। (और जैसा कि लियोनार्डो ने कहा, स्थैतिक विधि के सामने 'नया' खोना।) – fortboise

+0

धन्यवाद, जब मैंने इसमें भाग लिया तो मैंने अपने सिर को खरोंचने में काफी समय बिताया। मेरे मामले में यह लाइब्रेरी के इस हिस्से को लोड होने से पहले jquery लोड इवेंट ट्रिगर कर रहा था। –

+1

और यदि आपको एक से अधिक लाइब्रेरी की आवश्यकता है, तो बस उन्हें इस तरह से अलग करें: '? पुस्तकालय = ज्यामिति, विज़ुअलाइजेशन' ..etc। – elrobis

6

यह काम नहीं कर रहा है क्योंकि आप उपयोग के लिए प्रयोग कर रहे हैं 'नई' computeArea विधि। बिना "नया" के "google.maps.geometry.spherical.computeArea" का उपयोग करें। उदाहरण:

var z = google.maps.geometry.spherical.computeArea(myPolyline.getPath().getArray()); 
alert(z); 

यह काम करेगा।

संबंधित मुद्दे