| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1698 人关注过本帖
标题:[求助]怎么返回一个图片上鼠标所点的点坐标?
取消只看楼主 加入收藏
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
结帖率:0
收藏
 问题点数:0 回复次数:11 
[求助]怎么返回一个图片上鼠标所点的点坐标?
想做一个简单的鼠标点击点和已知点(图片上两点)的距离计算,如果在程序中就好做了,不过在网页中就有点蒙了.
或者用其他方法能实现也可以,如利用层的位置做.
可是我对层的应用又不是很了解,希望大家帮帮忙,谢谢先!~
搜索更多相关主题的帖子: 鼠标 坐标 网页 距离 
2006-10-16 11:12
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
有点象那个.公司要做一个自动选择安装队的网页,后台已知安装队的位置(或点坐标),用户只需要点一下自己的位置,系统就自动选择了最近的安装队.这个不知道困难不困难.

祝天下所有母亲幸福安康!~
2006-10-16 11:17
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
应该用JAVASCRIPT+DIV就能做的.我就是不会返回层的位置坐标.

祝天下所有母亲幸福安康!~
2006-10-16 11:27
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
谢谢了,回去研究一下,呵呵

祝天下所有母亲幸福安康!~
2006-10-16 12:44
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
以下是引用islet在2006-10-16 13:33:32的发言:
还要考虑滚条卷进去的大小 才能准确

这个已经不错了,进度条还是次要的,我可以做成100%显示,不过还有点小问题,就是计算最近点的时候如果用里面的那个FORMATNUM那个函数就会影响到准确性.


祝天下所有母亲幸福安康!~
2006-10-16 15:51
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 

<script>
var x1,y1,x2,y2,ju,k,top,left,dd,ee;
var x,y,yun,woyun;
function ccc(){
// if(k>1) k=0;
//if(k==0){
x1=event.clientX-left;
y1=event.clientY-top;
//}
// else
//{
//x2=event.clientX;
//y2=event.clientY;
//}
//if(k==1)
//{
yun=10000;
ss= new Array(5)
kk= new Array(5)
for(i=0;i<5;++i)
{
ss[i]=100+i*100;
kk[i]=100+i*120;
x=Math.abs(ss[i]-x1);
y=Math.abs(kk[i]-y1);
//alert(ss[i]);
//alert(kk[i]);
if(yun>Math.sqrt(x*x+y*y))
{
dd=ss[i];
ee=kk[i];
yun=Math.sqrt(x*x+y*y);
}
}
alert("您选择的点坐标是("+x1+","+y1+")");
alert("距离选择点最近的已知点坐标是("+dd+","+ee+")");
alert("两点之间距离为("+yun+")");

//alert("两点坐标:("+x1+","+y1+")("+x2+","+y2+")\n两点距离:"+ju+"像素");

//x1=0;y1=0;//x2=0;y2=0;
//}
//k++;
}
//格式化数字函数

</script>
<style type="text/css">
<!--
#d1 {
position:absolute;
width:3;
height:3;
z-index:1;
background-color: #0066ff;
overflow: hidden;
}
#d2 {
position:absolute;
width:3;
height:3;
z-index:2;
background-color: #FF0000;
overflow: hidden;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<script type="text/javascript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script><div id="d1" style="display:none"></div>
<div id="d2" style="display:none"></div>
<img src="http://www.no1edu.com/image/bj1.jpg" width="100%" height="100%" id="pic" onclick="return ccc()" />
<script>
top=document.getElementById("pic").offsetTop;
left=document.getElementById("pic").offsetLeft;
</script>

[此贴子已经被作者于2006-10-16 15:54:09编辑过]


祝天下所有母亲幸福安康!~
2006-10-16 15:53
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 

上面是比较准确的,没有应用formatNumber函数,下面应用formatNumber的在我这里不能得到正常的结果.

<script>
var x1,y1,x2,y2,ju,k,top,left,dd,ee;
var x,y,yun,woyun;
function ccc(){
// if(k>1) k=0;
//if(k==0){
x1=event.clientX-left;
y1=event.clientY-top;
//}
// else
//{
//x2=event.clientX;
//y2=event.clientY;
//}
//if(k==1)
//{
yun=10000;
ss= new Array(5)
kk= new Array(5)
for(i=0;i<5;++i)
{
ss[i]=kk[i]=100+i*100;
x=Math.abs(ss[i]-x1);
y=Math.abs(kk[i]-y1);
//alert(ss[i]);
//alert(kk[i]);
if(yun>formatNumber(Math.sqrt(x*x+y*y),"#,###.00"))
{
dd=ss[i];
ee=kk[i];
yun=formatNumber(Math.sqrt(x*x+y*y),"#,###.00");
}
}
alert("您选择的点坐标是("+x1+","+y1+")");
alert("距离选择点最近的已知点坐标是("+dd+","+ee+")");
alert("两点之间距离为("+yun+")");

//alert("两点坐标:("+x1+","+y1+")("+x2+","+y2+")\n两点距离:"+ju+"像素");

//x1=0;y1=0;//x2=0;y2=0;
//}
//k++;
}
//格式化数字函数
function formatNumber(number,pattern){
var str = number.toString();
var strInt;
var strFloat;
var formatInt;
var formatFloat;
if(/\./g.test(pattern)){
formatInt = pattern.split('.')[0];
formatFloat = pattern.split('.')[1];
}else{
formatInt = pattern;
formatFloat = null;
} if(/\./g.test(str)){
if(formatFloat!=null){
var tempFloat = Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);
strInt = (Math.floor(number)+Math.floor(tempFloat)).toString();
strFloat = /\./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';
}else{
strInt = Math.round(number).toString();
strFloat = '0';
}
}else{
strInt = str;
strFloat = '0';
}
if(formatInt!=null){
var outputInt = '';
var zero = formatInt.match(/0*$/)[0].length;
var comma = null;
if(/,/g.test(formatInt)){
comma = formatInt.match(/,[^,]*/)[0].length-1;
}
var newReg = new RegExp('(\\d{'+comma+'})','g'); if(strInt.length<zero){
outputInt = new Array(zero+1).join('0')+strInt;
outputInt = outputInt.substr(outputInt.length-zero,zero)
}else{
outputInt = strInt;
} var
outputInt = outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')+'$1')
outputInt = outputInt.replace(/^,/,''); strInt = outputInt;
} if(formatFloat!=null){
var outputFloat = '';
var zero = formatFloat.match(/^0*/)[0].length; if(strFloat.length<zero){
outputFloat = strFloat+new Array(zero+1).join('0');
//outputFloat = outputFloat.substring(0,formatFloat.length);
var outputFloat1 = outputFloat.substring(0,zero);
var outputFloat2 = outputFloat.substring(zero,formatFloat.length);
outputFloat = outputFloat1+outputFloat2.replace(/0*$/,'');
}else{
outputFloat = strFloat.substring(0,formatFloat.length);
} strFloat = outputFloat;
}else{
if(pattern!='' || (pattern=='' && strFloat=='0')){
strFloat = '';
}
} return strInt+(strFloat==''?'':'.'+strFloat);
}
</script>
<style type="text/css">
<!--
#d1 {
position:absolute;
width:3;
height:3;
z-index:1;
background-color: #0066ff;
overflow: hidden;
}
#d2 {
position:absolute;
width:3;
height:3;
z-index:2;
background-color: #FF0000;
overflow: hidden;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<script type="text/javascript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script><div id="d1" style="display:none"></div>
<div id="d2" style="display:none"></div>
<img id="pic" src="http://www.no1edu.com/image/bj1.jpg" width="100%" onclick="return ccc()" />
<script>
top=document.getElementById("pic").offsetTop;
left=document.getElementById("pic").offsetLeft;
</script>


[此贴子已经被作者于2006-10-16 15:58:28编辑过]


祝天下所有母亲幸福安康!~
2006-10-16 15:55
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
我这里客户选择自己家位置的时候用点坐标记录,而已知专卖店也在同样的图上用坐标表示,计算出两点最短的就是离客户最近的安装公司,这样虽然都是点坐标,但是和都是公里数的比例尺是一样的.
而当用到formatNumber函数的时候,明明肉眼就能看的出来的,比如我点的是101,102点,已知中有100,100点,却显示离101,102点最近的是200,200点
当没有用formatNumber函数的时候结果还算准确.

祝天下所有母亲幸福安康!~
2006-10-16 16:03
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
不知道是不是这个formatNumber函数的问题,它太长了,我也懒的看它了,现在能弄到这个样子,已经能对付着用了,还有就是不知道进度条怎么考虑进去.

祝天下所有母亲幸福安康!~
2006-10-16 16:05
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
以下是引用baidu在2006-10-16 16:07:55的发言:
什么也看不见

运行就可以了,可能需要的时间长一点


祝天下所有母亲幸福安康!~
2006-10-16 16:11
快速回复:[求助]怎么返回一个图片上鼠标所点的点坐标?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018486 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved