Геокодер является асинхронным, когда функция обратного вызова запускает цикл, и icon_marker
остается установленным последним значением в массиве (зеленый).
Я бы предложил использовать закрытие функции для связывания свойства маркера с запросом (как вы это делаете, чтобы связать содержимое infowindow с маркером).
доказательство концепции fiddle
фрагмент кода :
function geocodeAddress(location, bounds, infowindow, geocoder, map) {
var address = location[0];
var icon_marker = location[1];
geocoder.geocode({
'address': address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
icon: icon_marker
});
google.maps.event.addListener(marker, 'click', function(evt) {
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
});
bounds.extend(results[0].geometry.location);
map.fitBounds(bounds);
} else {
alert("Geocode of " + address + " failed," + status);
}
});
}
function initialize() {
var myOptions = {
zoom: 2,
panControl: true,
zoomControl: false,
mapTypeControl: false,
streetViewControl: false,
center: {
lat: 0,
lng: 0
},
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
scrollwheel: false,
};
var bounds = new google.maps.LatLngBounds();
var map = new google.maps.Map(document.getElementById("google-container"), myOptions);
var geocoder = new google.maps.Geocoder();
var locations = [
['Russia', 'http://maps.google.com/mapfiles/ms/icons/blue.png'],
['Japan', 'http://maps.google.com/mapfiles/ms/icons/blue.png'],
['London', 'http://maps.google.com/mapfiles/ms/icons/green.png'],
['Brazil', 'http://maps.google.com/mapfiles/ms/icons/green.png']
];
var infowindow = new google.maps.InfoWindow();
for (i = 0; i < locations.length; i++) {
geocodeAddress(locations[i], bounds, infowindow, geocoder, map)
}
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#google-container {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
Вы проверяли разрешение на временную папку для загрузки?
Что скажет php, если вы делаете:
var_dump($_FILES);
Loïc Février, спасибо, вы спасли меня много времени!
Вот моя часть ... печать возможных ошибок во время загрузки.
Сначала создайте каталог Uploader / UploadedFiles Затем используйте код ниже ...
$destination=$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/" . $_FILES["file"]["name"];
if(move_uploaded_file($_FILES["file"]["tmp_name"], $destination)){
echo ("Stored in".$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/".$_FILES["file"]["name"]);
}else{
$html_body = '<h1>File upload error!</h1>';
switch ($_FILES[0]['error']) {
case 1:
$html_body .= 'The file is bigger than this PHP installation allows';
break;
case 2:
$html_body .= 'The file is bigger than this form allows';
break;
case 3:
$html_body .= 'Only part of the file was uploaded';
break;
case 4:
$html_body .= 'No file was uploaded';
break;
default:
$html_body .= 'unknown errror';
}
echo ($html_body);
}
Не используйте
$path = "http://www.barbadostravelbuddy.co.uk/demo/images/carhire
/accountile10420103260403000000pm.png"
, но
$path = "/home/sites/barbadostravelbuddy.co.uk/public_html/demo/images/carhire/
accountile10420103260403000000pm.png"
Это должен быть путь в системе, а не URL.
_SERVER["DOCUMENT_ROOT"]
? Можете ли вы предоставить нам разрешения, которые имеет каталог?
– Loïc Février
4 October 2010 в 17:20
Основные этапы отладки:
print_r($_FILES)
? $path
? Предполагаю, что $path
- это только путь к папке, а не полный файл name.
Обновление: вам нужно указать путь к файловой системе как $ path.
blockquote>
$path
должно быть полным именем файла, которое еще не существует, а не только путь к каталогу.
– Pekka 웃
4 October 2010 в 15:20
Вы отредактировали ваш php.ini, чтобы убедиться, что upload_tmp_dir указывает на временный каталог?
С move_uploaded_file
вам не нужны 777 разрешений. Каков результат работы $path
? Вы подтвердили, что существует $path
? Вы проверяли, что $field
существует?
Либо $ field или $ path не существует, либо open_basedir в действительности является моим догадством.
Включено ли ограничение open_basedir
? Это может помешать отправке загруженного файла. Посмотрите в php.ini для open_basedir
, если указан путь, он включен и вы хотите узнать, находится ли путь назначения вашего загруженного файла к этому пути. Если это так, поэтому он не работает.
update
$ path не может быть URL-адресом, он должен быть локальным путем, например /home/user/public_html/
Я проверил переменные
blockquote>Не проверять переменные, а проверять сообщения об ошибках. Это единственное, что вам нужно. Добавьте эти строки вверху вашего кода
ini_set('display_errors',1); error_reporting(E_ALL);
и посмотрите, что он говорит. Если файл move_uploaded_file не удался, он всегда будет вызывать ошибку с подробным объяснением. Вы не поверите, но чтение сообщений об ошибках является более эффективным способом поиска проблемы, чем догадки , которые вы пытались до
. Я не могу поверить, что никто не упомянул об этом.
move_uploaded_file()
, скорее всего, вызвано проблемой разрешения в папке назначения / каталоге. И да, вы можете видеть сообщения об ошибках с этими ответами, чтобы проверять сообщения об ошибках, а не проверять переменные на наличие ошибок.
– Aryo
4 June 2013 в 05:24