2013-01-14 22 views
5

मैं यूएस बेरोजगारी के jVectorMap उदाहरण विज़ुअलाइजेशन को फिर से बनाने की कोशिश कर रहा हूं। मैंने सीधे कोड github से लिया। नक्शा, लोड नहीं होगा और कंसोल मुझे यह त्रुटि देता है: "जेवीएम परिभाषित नहीं है।"jVectorMap त्रुटि: "जेवीएम परिभाषित नहीं किया गया है"

<!DOCTYPE html> 
    <html> 
    <head> 
     <meta charset="utf-8"/> 
     <title>Maps</title> 
     <link rel="stylesheet" media="all" href="../jvectormap/jquery-jvectormap.css"/> 
     <link rel="stylesheet" media="all" href="css/jquery-ui-1.8.21.custom.css"/> 
     <script src="../jvectormap/tests/assets/jquery-1.8.2.js"></script> 
     <script src="../jquery-jvectormap.js"></script> 
     <script src="../jvectormap/tests/assets/jquery-jvectormap-us-aea-en.js"></script> 
     <script src="jquery-ui-1.8.21.custom.min.js"></script> 

    <script> 
    $(function(){ 
     $.getJSON('data.json', function(data){ 
     var val = 2009; 
      statesValues = jvm.values.apply({}, jvm.values(data.states)), 
      metroPopValues = Array.prototype.concat.apply([], jvm.values(data.metro.population)), 
      metroUnemplValues = Array.prototype.concat.apply([], jvm.values(data.metro.unemployment)); 

     $('.map').vectorMap({ 
      map: 'us_aea_en', 
      markers: data.metro.coords, 
      series: { 
      markers: [{ 
       attribute: 'fill', 
       scale: ['#FEE5D9', '#A50F15'], 
       values: data.metro.unemployment[val], 
       min: jvm.min(metroUnemplValues), 
       max: jvm.max(metroUnemplValues) 
      },{ 
       attribute: 'r', 
       scale: [5, 20], 
       values: data.metro.population[val], 
       min: jvm.min(metroPopValues), 
       max: jvm.max(metroPopValues) 
      }], 
      regions: [{ 
       scale: ['#DEEBF7', '#08519C'], 
       attribute: 'fill', 
       values: data.states[val], 
       min: jvm.min(statesValues), 
       max: jvm.max(statesValues) 
      }] 
      }, 
      onMarkerLabelShow: function(event, label, index){ 
      label.html(
       '<b>'+data.metro.names[index]+'</b><br/>'+ 
       '<b>Population: </b>'+data.metro.population[val][index]+'</br>'+ 
       '<b>Unemployment rate: </b>'+data.metro.unemployment[val][index]+'%' 
      ); 
      }, 
      onRegionLabelShow: function(event, label, code){ 
      label.html(
       '<b>'+label.html()+'</b></br>'+ 
       '<b>Unemployment rate: </b>'+data.states[val][code]+'%' 
      ); 
      } 
     }); 

     var mapObject = $('.map').vectorMap('get', 'mapObject'); 

     $(".slider").slider({ 
      value: val, 
      min: 2005, 
      max: 2009, 
      step: 1, 
      slide: function(event, ui) { 
      val = ui.value; 
      mapObject.series.regions[0].setValues(data.states[ui.value]); 
      mapObject.series.markers[0].setValues(data.metro.unemployment[ui.value]); 
      mapObject.series.markers[1].setValues(data.metro.population[ui.value]); 
      } 
     }); 
     }); 
    }) 
    </script> 
</head> 
<body> 
    <div class="map" style="width: 800px; height: 600px"></div> 
    <div class="slider" style="width: 280px; margin: 10px"></div> 
</body> 
</html> 

उत्तर

-2

Donno jVectorMap लेकिन एक साधारण अवलोकन के बारे में ज्यादा:

कोड यह रहा।

अपने कोड में, चर 'jvm' कहीं भी परिभाषित नहीं है। कोड में प्रयुक्त जेएस फाइलों की जांच करना और 'jvm' चर के किसी भी प्रारंभिकरण के लिए देखना अच्छा नहीं होगा?

0

statesValues, metroPopValues, और metroUnempValues चर घोषणाओं को अपने स्वयं के बयान एक ; के साथ समाप्त होना चाहिए। आप वर्तमान में , के साथ लाइनों को समाप्त करते हैं।

var val = 2009; 
var statesValues = jvm.values.apply({}, jvm.values(data.states)); 
var metroPopValues = Array.prototype.concat.apply([], jvm.values(data.metro.population)); 
var metroUnemplValues = Array.prototype.concat([], jvm.values(data.metro.unemployment)); 
+0

सुझाव के लिए धन्यवाद आपकी फ़ाइलों मिलता है, मैं परिवर्तन किया है, लेकिन यह त्रुटि के साथ मदद नहीं की! – rdmirza

+0

यह भी सत्यापित करता है कि संसाधन फ़ाइलों के पथ सही हैं और सफलतापूर्वक लोड हो रहे हैं। –

4

तो आप minified जेएस फ़ाइल का उपयोग नहीं कर रहे हैं। इसमें पुस्तकालयों के बिना केवल मुख्य कोड होता है।

इस त्रुटि को ठीक करने के लिए आप 2 समाधान है:

  1. सभी आवश्यक पुस्तकालयों जोड़ें। आप इसे lib/ निर्देशिका में पा सकते हैं। फाइलों के साथ उदाहरण और आपको किस क्रम के साथ tests/index.html फ़ाइल

  2. minified जेएस बनाएँ। आपको NIX सिस्टम का उपयोग करने और ./build.sh निष्पादित करने की आवश्यकता है। शायद तुम uglifyjs utility स्थापित करने के लिए, उदाहरण के लिए आप install npm from here और उसके बाद निष्पादित कर सकते हैं npm install [email protected]

+1

'build.sh' को चलाने के लिए मेरे लिए काम किया –

+0

ओह गीज़, उनके पास उनकी वेबसाइट पर क्यों नहीं है? क्या वे इसे सामान्य ज्ञान मानते हैं? –

16

मैं इस में ठीक उसी समस्या थी की आवश्यकता होगी। समस्या ज़िप फ़ाइल आप डाउनलोड की

<script src="../jquery-jvectormap.js"></script> 

है कि आप रीडायरेक्ट कर देता है वास्तव में एक जे एस फ़ाइल है कि JVM, न कि वास्तविक JVM पुस्तकालय (invokes है जो तुम क्यों हो रही है "JVM परिभाषित नहीं है" त्रुटि है।

तरह से मैं तय यह फ़ाइल

http://jvectormap.com/js/jquery-jvectormap-1.2.2.min.js 

लेने के लिए और अपने प्रोजेक्ट में शामिल किया गया था।

वास्तविक JVM पुस्तकालय है यही कारण है, इसलिए जब तक कि समेत है किसी भी .vectorMap कॉल करने से पहले एड, यह आपके लिए बहुत अच्छा काम करेगा।

+0

यह उत्तर वास्तव में मेरी मदद नहीं करता था, लेकिन मैंने एक विषय (रंग व्यवस्थापक) खरीदा है जो jvectormap का एक अलग संस्करण प्रदान कर रहा है जिसे मैं शामिल करना चाहता था (आखिरी ओपन सोर्स), ओएस मुझे यह त्रुटि मिली, उस मामले में, प्रदान की गई संस्करण। – Loenix

+0

मैं jvactormap लाइब्रेरी संस्करण 2.0.4 के लिए क्लाउडफ्लेयर सीडीएन से जेएस फ़ाइल का उपयोग कर रहा था, काम नहीं कर रहा था। मैंने इसे ऊपर वर्णित स्थानीय जेएस फ़ाइल संस्करण 1.2.2 के साथ बदल दिया और यह काम किया। मानचित्र किसी कारण से 2.0.4 लाइब्रेरी में jvm नहीं ढूंढ सकता है। – echology

0

यदि आप अभी भी स्थानीय फ़ाइलों को स्थानीय रूप से सहेजना चाहते हैं, उदाहरण के लिए यदि आप बोवर का उपयोग कर रहे हैं, तो आप गीटहब पर this "built" version of jvectormap का भी उपयोग कर सकते हैं।

1

ऐसा लगता है कि मिनीफाइड फ़ाइल में jquery-jvectormap.js नहीं होने पर आवश्यक सभी विभिन्न फ़ाइलें शामिल हैं। इसलिए यदि आप गैर-minified संस्करण का उपयोग करना चाहते हैं तो आपको jquery-jvectormap.js द्वारा आवश्यक सभी विभिन्न फ़ाइलों को मैन्युअल रूप से लोड करने के लिए तैयार होना चाहिए उदाहरण के लिए map.js, vector-canvas.js, e.t.c. ये /src निर्देशिका में पाया जा सकता है अगर आप से the jvector maps website

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