2012-07-02 2 views
3

Я пытаюсь работать с библиотекой google.maps.visualization. Я включил библиотеку в свой код и все такое, и большинство из них, похоже, работает, но когда я доберусь до создания тепловой карты, я получаю сообщение об ошибке «Недопустимое значение в позиции 96677: [object Object]» , Я не уверен, что эта проблема о, но сообщение об ошибке включает в себя строку кода API Google:API Карт Google v 3: Создание карты тепловой защиты

var c; 
M(b,function(b,e){ 
    try{ 
     a(b)||(c="Invalid value at position "+(e+(": "+b))) 
    }catch(f){ 
     c="Error in element at position "+(e+(": ("+(f[Pb]+")")))}});c&&aa(ja(c));return j 
    } 
} 

Я просмотрел код API немного, но это довольно трудно найти что-нибудь полезное там. Код, я использую для создания Heatmap слоя выглядит следующим образом:

$.ajax({ 
    url: "../Yield/getYieldData.php", 
    success: function(text) { 
     var data; 
//  var yieldPoints = new google.maps.MVCArray(); 
     var yieldPoints = []; 

     try{ 
      data = $.parseJSON(text); 
     } catch (e) { 
      alert("ERROR: " + e); 
     } 

     for(i=0; i < data.points.length; i++) { 
//   yieldPoints.push({ location: new google.maps.LatLng(data.points[i].lat, data.points[i].lon), weight: data.points[i].yield }); 
      yieldPoints[i] = { location: new google.maps.LatLng(data.points[i].lat, data.points[i].lon), weight: data.points[i].yield }; 
     } 
     var heatMap = new google.maps.visualization.HeatmapLayer({ data: yieldPoints }); 
     heatMap.setMap(map); 
    } 
}); 

Я не знаю, где эта проблема исходит отсюда, но я использовал документацию API Google в качестве шаблона, как найдено в https://developers.google.com/maps/documentation/javascript/layers#JSHeatMaps (примерно треть пути вниз по странице под заголовком «Добавление взвешенных точек данных»). Как вы можете видеть, я также попытался создать массив как MVCArray, как описано в этой документации, но это ничего не изменило. В случае, если это уместно, вот краткий пример данных JSON, который принимаемой от призыва «getYieldData.php»:

{"points":[{"lat":"38.1513366000","lon":"-97.4341659000","yield":"0"},{"lat":"38.1513748000","lon":"-97.4341125000","yield":"0"},{"lat":"38.1513938000","lon":"-97.4341125000","yield":"0"},{"lat":"38.1493263000","lon":"-97.4339447000","yield":"0"},{"lat":"38.1493339000","lon":"-97.4339447000","yield":"0"},{"lat":"38.1493377000","lon":"-97.4339447000","yield":"0"},{"lat":"38.1483650000","lon":"-97.4358291000","yield":"0"},{"lat":"38.1484031000","lon":"-97.4358062000","yield":"0"},

Надеюсь, это достаточно информации для кого-то, чтобы увидеть, что проблема любого это- помощь вообще была бы высоко оценена. Спасибо.

+0

Быстрое обновление: Я попытался сбросив последний элемент массив, и получил ту же ошибку для позиции 96676, поэтому, по-видимому, она проходит через массив в обратном порядке и находит Проблема с элементами в целом. – Crash

ответ

5

weight должно быть Number, а не String. Таким образом, у вас есть 2 варианта:

  • ИЗБЕЖАТЬ котировки в формате JSON:

    {"lat":"38.1513366000","lon":"-97.4341659000","yield":0} 
           //no quote wraps 'yield' ------------^ 
    
  • литая yield к Number:

    yieldPoints[i] = { 
          location: new google.maps.LatLng(data.points[i].lat, data.points[i].lon), 
          weight: +data.points[i].yield }; 
    };     ^----- plus('+') is the fastest way for converting string to number   
    
+0

Спасибо, что была проблема. Я использовал parseFloat() вместо «+». Сколько я получаю с точки зрения скорости? – Crash

+0

@Crash Думаю, в вашем случае различия в скорости будут недостаточно заметны. Поэтому 'parseFloat' тоже подходит. – Engineer

+0

@Engineer Эй, я столкнулся с этой странной проблемой. Для моей первой тепловой карты вес - это String, и работает Heatmap. Затем для моей второй карты тепла карта нагрева работает только тогда, когда вес является строкой. Когда я отбрасываю его на «Number», тепловая карта не появляется. Однако для второй тепловой карты «тепло» как-то отображается в квадрате, и оно не работает с заданным множителем. У тебя есть идеи? – hyperfkcb

Смежные вопросы