首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >setAccuracy对setHorizontalAccuracy

setAccuracy对setHorizontalAccuracy
EN

Stack Overflow用户
提问于 2013-07-11 17:25:54
回答 1查看 733关注 0票数 2

setAccuracy

指示所需的纬度和经度精度。精度可能是ACCURACY_FINE,如果需要的位置是好的,否则它可以是ACCURACY_COARSE。更准确的定位可能消耗更多的电力,可能需要更长的时间。

setHorizontalAccuracy

指示所需的水平精度(纬度和经度)。准确度可以是ACCURACY_LOW、ACCURACY_MEDIUM、ACCURACY_HIGH或NO_REQUIREMENT。更准确的定位可能消耗更多的电力,可能需要更长的时间。

另一个原始android文档的例子。那有什么区别呢?注意,它们采用不同的常量--是否有可能/需要使用某些常量组合来指定这两者?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 21:18:18

来源是相当清晰的。

代码语言:javascript
运行
复制
/**
 * Indicates the desired horizontal accuracy (latitude and longitude).
 * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM},
 * {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}.
 * More accurate location may consume more power and may take longer.
 *
 * @throws IllegalArgumentException if accuracy is not one of the supported constants
 */
public void setHorizontalAccuracy(int accuracy) {
    if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_HIGH) {
        throw new IllegalArgumentException("accuracy=" + accuracy);
    }
    mHorizontalAccuracy = accuracy;
}

/**
 * Returns a constant indicating the desired horizontal accuracy (latitude and longitude).
 * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM},
 * {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}.
 */
public int getHorizontalAccuracy() {
    return mHorizontalAccuracy;
}

/**
 * Indicates the desired accuracy for latitude and longitude. Accuracy
 * may be {@link #ACCURACY_FINE} if desired location
 * is fine, else it can be {@link #ACCURACY_COARSE}.
 * More accurate location may consume more power and may take longer.
 *
 * @throws IllegalArgumentException if accuracy is not one of the supported constants
 */
public void setAccuracy(int accuracy) {
    if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_COARSE) {
        throw new IllegalArgumentException("accuracy=" + accuracy);
    }
    if (accuracy == ACCURACY_FINE) {
        mHorizontalAccuracy = ACCURACY_HIGH;
    } else {
        mHorizontalAccuracy = ACCURACY_LOW;
    }
}

/**
 * Returns a constant indicating desired accuracy of location
 * Accuracy may be {@link #ACCURACY_FINE} if desired location
 * is fine, else it can be {@link #ACCURACY_COARSE}.
 */
public int getAccuracy() {
    if (mHorizontalAccuracy >= ACCURACY_HIGH) {
        return ACCURACY_FINE;
    } else {
        return ACCURACY_COARSE;
    }
}

那有什么区别呢?注意,它们采用不同的常量--是否有可能/需要使用某些常量组合来指定这两者?

这没什么区别-- setAccuracy()只是将mHorizontalAccuracy设置为ACCURACY_HIGHACCURACY_LOW --如果您想要ACCURACY_MEDIUMNO_REQUIREMENT,就必须调用setHorizontalAccuracy()

因此,内部的精确性只是“水平精度”。现在,如果有人知道他们为什么需要两者,我会接受他/她的回答--暂时结束。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17599719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档