Тип геообъекта: house
VM75:65 Название объекта: 1-й Волконский переулок, 10
VM75:66 Описание объекта: Россия, Москва
VM75:67 Полное описание объекта: Россия, Москва, 1-й Волконский переулок, 10
VM75:72
Государство: Россия
VM75:73 Населенный пункт: Москва
VM75:74 Адрес объекта: Россия, Москва, 1-й Волконский переулок, 10
VM75:75 Наименование здания: -
VM75:76 Номер здания: 10
Правда работа с api ограниченно бесплатная, но для небольшого сайта с умеренным трафиком очень даже. $results_file='results.php';
$result=include_once($results_file);
$result[$current_user_id]=['post'=>$_POST, 'time'=>time()];
file_put_contents($results_file, '<'."?php\nreturn ".var_export($result,true).';')
<?php
return [];
if (preg_match('/\.gz$/', $name)) {
$_handle = fopen($name, "rb");
fseek($_handle, filesize($name) - 4);
$x = unpack("L", fread($_handle, 4));
$this->finish = $x[1];
fclose($_handle);
$handle = gzopen(
$handle, 'r'
);
} else {
$this->finish = filesize($name);
$handle = fopen($name, 'r');
}
$text=preg_replace('~\[CODE\](.*?)\[/CODE\]~si', '<pre>$1</pre>',$text);
$query=[];
parse_str(parse_url($query_string, PHP_URL_QUERY),$query_array);
unset($query_array['select']);
echo (!empty($query_array)?'?':'').http_build_query($query_array);
function moveBg(evt){
if(!!moveBg.timeout){ // функция недавно вызывалась - запоминаем параметр и ждем;
moveBg.evt=evt;
return ;
}
// начинаем засечку времени 1 сек. По окончании таймаута вызываем функцию с последним актуальным параметром, если надо
moveBg.timeout=setTimeout(function(){moveBg.timeout=null; if(!!moveBg.evt){moveBg(moveBg.evt); moveBg.evt=null}},1000 );
// дальше без изменений и коррекций
var totalWidth = $('.home-shadow').width()
var rect = evt.target.getBoundingClientRect()
var x = evt.clientX - rect.left;
var percent = x*100 / totalWidth
console.log(percent)
var styleElem = document.head.appendChild(document.createElement("style"));
styleElem.innerHTML = `#home-shadow:before {background-position: ${percent}% 50%`;
}
$('body').mousemove(function(evt){
if(evt.target.classList[0] == 'home-shadow'){
moveBg(evt);
}
});
let control = document.querySelector('.text'),
txt= control.textContent,
track=[];
function runit(){
let c= track.shift();
if(!c) return ;
if(c[0]==='pause'){
setTimeout(runit,c[1]);
} else if(c[0]==='substr') {
control.textContent = txt.substr(c[1], c[2]);
setTimeout(runit, 300);
}
}
// программируем поведение
for( let i=1;i<=txt.length;i++){
track.push(['substr',0,i]);
}
track.push(['pause',3000]);
for( let i=txt.length;i>=0;i--){
track.push(['substr',0,i]);
}
runit();
$(function(){
var elements=$('.red,.yellow');
for(let i=0;i<elements.length;i++){
let ri=elements.eq(i)[0].getBoundingClientRect();
for(let j=i+1;j<elements.length;j++){
let rj=elements.eq(j)[0].getBoundingClientRect();
console.log(//ri,rj,
Math.max(ri.x,rj.x)<=Math.min(ri.x+ri.width,rj.x+rj.width)
&&
Math.max(ri.y,rj.y)<=Math.min(ri.y+ri.height,rj.y+rj.height)
)
}
}
})
// Создаю клетки 49 клеток с классом "cell"
for(let i = 1; i <= 49; i++) {
var x=Math.floor((i-1)/7)+1,y=((i-1)%7)+1;
area.innerHTML += `<div class='cell' id='id-`+x+`-`+y+`'></div>`
}
// Отслеживаю клик по клетке и выполняю функцию cellClick()
const cells = document.querySelectorAll('.cell')
cells.forEach(cell => {
cell.addEventListener('click', cellClick, false)
})
// Первый игрок - X
let player = 'x'
// В функции cellClick() я проверяю занята ли клетка, и если нет, то
// вставляю в неё текущего игрока.
function cellClick() {
/**
* проверяем, что по координатам x,y стоит нужный знак
*
* @param x
* @param y - координаты
* @param player - крестик
* @returns {boolean} true - стоит
*/
function check(x,y,player){
return document.getElementById('id-'+x+'-'+y).innerHTML==player;
}
/**
* считаем количество крестиков(player) от координаты x,y в "направлении" dx,dy
* @param dx
* @param dy
* @param x
* @param y
* @param player
* @returns {number}
*/
function countit(dx,dy,x,y, player){
var total=0;
x+=dx; y+=dy;
while (x>0 && x<=7 && y>0 && y<=7 ){
if(check(x,y,player))
total++;
else
break;
x+=dx; y+=dy;
}
return total;
}
if (!this.innerHTML) {
this.innerHTML = player;
// so checkit
var dirs=[[0,1],[-1,1],[-1,0],[-1,-1]],
// вычисляем текущие координаты клика
m=this.getAttribute('id').match(/id-(\d+)-(\d+)/),
// вот они - координаты. Умножение для преобразования строк в числа
x=1*m[1], y=1*m[2];
for(var d=0;d<dirs.length;d++){
if(5>1+ // 1 - мы поставили крестик
// число крестиков в направлении
countit(dirs[d][0],dirs[d][1], x, y, player) +
// и инвертированном направлении
countit([-dirs[d][0],-dirs[d][1]],x ,y , player)
){
// если меньше чем надо для победы - считаем дальше
continue;
}
// если нашли больше 5 крестиков в ряд - победа.
alert('Победа '+player);
break;
}
}
// Меняю игрока, если текущий игрок сходил.
player = player == "x" ? "o" : "x"
}