Я использую http://maps.google.com/maps/api/js?sensor=false для получения широты и долготы для адреса.
При извлечении данных из Google я сохраняю латы и lng в массивах myLat и myLng.
Конечный пользователь вводит адреса в текстовое поле вместе с именами зданий, которые также хранятся в их собственных библиотеках schoolAddressArray и schoolNameArray.
Я помещаю результаты в элемент div, называемый results -
document.getElementById("results")
Затем я беру построенную строку и использую eval, чтобы преобразовать ее в объект типа JSON.
PHP start
global $browser;
if(strpos($_SERVER["HTTP_USER_AGENT"], "Opera") !== FALSE)
{
$browser = "opera";
}
if(strpos($_SERVER["HTTP_USER_AGENT"], "MSIE") !== FALSE)
{
$browser = "msie";
}
if(strpos($_SERVER["HTTP_USER_AGENT"], "Firefox") !== FALSE)
{
$browser = "ff";
}
if(strpos($_SERVER["HTTP_USER_AGENT"], "Safari") !== FALSE)
{
$browser = "safari";
}
echo'
<script type="text/javascript">
<!--
var $whichBrowser = "'; echo $browser; echo'";
-->
</script>
';
PHP end
Здесь начинается JavaScript
var strlen = tempVar.length;
var myNewTempVar = tempVar.slice(0,strlen-2)+']';
document.getElementById("results").innerHTML = myNewTempVar;
if($whichBrowser == "msie")
{
//alert(document.getElementById("results").childNodes[0].nodeValue);
markers = window.eval(document.getElementById("results").childNodes[0].nodeValue);
}
else if($whichBrowser == "opera")
{
//markers = window.eval([getProperty(tempVar.slice(1,strlen-2))]);
//alert(markers);
//markers = [{ lat: 34.0878234, lng: -118.1543285, name: "1 school"}, { lat: 34.071239, lng: -118.1506133, name: "2 school"}, { lat: 34.1015362, lng: -118.1328816, name: "3 school"}, { lat: 34.098139499, lng: -118.1168382, name: "4 school"}, { lat: 34.0751855, lng: -118.1381771, name: "5 school"}, { lat: 34.0856624, lng: -118.1345840, name: "6 school"}, { lat: 34.0951319, lng: -118.1421722, name: "7 school"}, { lat: 34.0760016, lng: -118.1281349, name: "8 school"}, { lat: 34.0621694, lng: -118.1291052, name: "9 school"}, { lat: 34.0583261, lng: -118.1563075, name: "10 school"}, { lat: 34.046435, lng: -118.1524630, name: "11 school"}, { lat: 34.054128899, lng: -118.1280777, name: "12 school"}];
for(var myX=0;myX<myLat.length;myX++)
{
markers.push(["{ lat: "+myLat[myX]+", lng: "+myLng[myX]+", name: "+schoolNameArray[myX]+"}"]);
}
alert(markers);
}
else
{
markers = eval('('+myNewTempVar+')');
}
Конец JavaScript
Как видите, я использую PHP
strpos($_SERVER["HTTP_USER_AGENT"]
, чтобы выяснить, какой браузер используется конечным пользователем, а затем повторить некоторый JavaScript для установки переменной $ whichBrowser.Это работает для меня с начала 2000-х годов - кстати, я не знаю, как это назвать.90-е - это 90-е.Это 10-е годы?0s?
В любом случае, код для IE, FF и Safari работает нормально, но я попробовал все, что мог придумать с Opera, и он просто не увидит маркеры как объект.
Я скопировал построенную строку из div результатов и жестко закодировал ее, чтобы увидеть, работает ли она вообще в опере, что она делает без ошибок.
Я также пробовал:
for(index in myLat)
{
markers[index].lat = myLat[index];
markers[index].lng = myLng[index];
markers[index].name = schoolNameArray[index];
}
Я получил ошибки в диапазоне от невозможности конвертировать маркеры [index] в объект в исключение Uncaught: RangeError: Превышена максимальная глубина рекурсии
Вот тестовые данные, которые я использую:
2821 W. Commonwealth Ave., Alhambra, CA
2001 S. Elm St., Alhambra, CA
110 W. McLean St., Alhambra, CA
100 S. Granada Ave., Alhambra, CA
1603 S. Marguerita Ave., Alhambra, CA
409 S. Atlantic Blvd., Alhambra, CA
301 N. Marengo Ave., Alhambra, CA
509 W. Norwood Pl., Alhambra, CA
120 S. Ynez Ave., Monterey Park, CA
400 Casuda Canyon Dr., Monterey Park, CA
1701 Brightwood St., Monterey Park, CA
650 Grandridge Ave., Monterey Park, CA
Вот ссылка на мой тестовый сервер - http://kronusproductions.com/mycarpaysme_ajax/test_street_view13.php
Как вы можете видеть, в IE, Safari и FF не сообщается об ошибках, но Opera - другая игра с мячом.,
Некоторые предупреждения в Safari для svgs, возвращаемых google, и некоторые предупреждения css в FF, но 0 ошибок.IE жалуется, когда Google не возвращает адрес, но после исправления этой проблемы в Opera я введу какой-нибудь код попытки и отлова для Google.
Я также попытался отправить строку в функцию и вернутьоценка, но пока ничего не получалось.
Заранее спасибо, и я надеюсь, что я следовал всем правилам при публикации на этом форуме.